Главная > Adobe AIR, AJAX, Flash, ActionScript, Open Source, web2.0, веб-обзоры, Разное > Adobe AIR 2.0 — свежий глоток нового воздуха!

Adobe AIR 2.0 — свежий глоток нового воздуха!

18 октября 2009

sidebar-logo2Приветствую наших читателей. Предыдущий месяц совпал со множеством кардинальных событий, поэтому блог временно не обновлялся, теперь буду стараться писать регулярнее. Если кратко подытожить события, то я переехал жить и работать в Киев, по причине того, что перешел в один стартап, в котором мне "сделали предложение, от которого невозможно отказаться" и мы сейчас, вместе с небольшой но отличной командой создаем очень интересное (с технической точки зрения) приложение, или скорее, SaaS-платформу для... а здесь уже нельзя пока рассказывать, мы пока публично не анонсировали проект. Конечно, это никак не означает, что я забыл о своих игровых интересах, наша компания все еще работает, и, судя по всему, достаточно хорошо. Параллельно мы проектируем несколько игровых проектов, поэтому ждите анонсов. Также не забыт собственный сигнал-ориентированных фреймворк, он сейчас как раз проходит боевую обкатку в стартапе и будет выложен (в open source, конечно) немного позже. Вот такие новости, но если не хотите ожидать очередной статьи в блоге, чтобы узнать о мире новых технологий, следите за нашим твиттером, там я публикую почти ежедневно.

А теперь поговорим о наиболее интересном событии за прошедшее время. На мой взгляд, это Adobe MAX 2009, самая большая конференция, где Adobe представила множество интересных проектов и заявила о выходе в следующем году линейки CS 5 своих продуктов (а там много интересного уже сейчас, например, Flash CS 5 обещают доступную бету уже к концу года). Но для веб-разработчиков наиболее ожидаемым является достаточно небольшой проект (по сравнению с другими) - Adobe AIR 2.0. Я уже неоднократно заявлял, что AIR это пока лучшая платформа для RAI-приложений, при этом без каких-либо отклонений от слова "приложений". Текущая версия 1.5.х обладает мощной поддержкой индустрии и разработчиков, в том числе и потому, что использует всем привычные технологии для разработки - JavaScript/HTML и Flash. Приложения для AIR выпускают многие компании, в том числе гиганты индустрии вроде eBay, NASDAQ, FedEx, медиагигант Fox и другие, сама Adobe создала несколько мультимедийных проектов для распространения своей платформы.

Но на горизонте уже есть новости о следующем поколении AIR, которое должно не просто еще больше укрепить позиции в сфере платформ для веб-приложений, но даже, без преувеличения, просто отстранить все остальные конкурирующие платформы (в этом своем обзоре я описывал несколько таких продуктов, но даже наиболее мощный Titanium все равно  не может похвастаться всеми фишками AIR 2, хотя, без сомнения, первый и реальный кандидат на соперничество, особенно в 0.7 версии, где уже появилась поддержка РНР в качестве скриптового языка).

higherlevel-arct

Что же нового ожидает нас в AIR 2.0? Сейчас рассмотрим подробнее.

  • Возможность запуска внешних приложений - да, теперь можно будет инициировать открытие приложений из AIR, например, если вы работаете с документами Word или Excel, то сможете предоставить пользователю возможность напрямую из приложения открыть файл в его родной программе, ранее это было доступно только для PDF-файлов (как я понимаю, только потому, что Flash научился рендерить PDF).
    • Если подробнее, то за этот функционал отвечают новые классы: flash.desktop.NativeProcess, позволяющий работать с командным интерфейсом, перехватывать и обрабатывать стандартные потоки ввода/вывода и ошибки, flash.desktop.NativeProcessStartupInfo  для получения информации о процессах, flash.events.NativeProcessExitEvent - обработка события завершения потока. Важное замечание - этот функционал доступен только для приложений в виде нативных инсталляторов, для пакетов air, которые можно установить из веб-страницы, они недоступны (видимо по соображениях безопасности).
    • За возможность открывать файлы в родных приложениях отвечает метод openWithDefaultApplication, через который можно открыть файл в ассоциированном приложении, или запустить его, если это приложение (исполняемый файл).

24839f0804

  • Родные инсталляционные пакеты для приложения. Если раньше ваша программа паковалась в независимый от платформы формат *.air (очень схожий с jar), то теперь можно создавать нативные приложения  для каждой платформы (вопрос остается открытым - будет ли возможность создать независимый дистрибутив, когда в пакет включена и сама среда AIR). Конечно, вариант с air-пакетом также останется. В этом плане Adobe в роли догоняющего, потому что тот же Titanium изначально обладал этими возможностями (там вся среда исполнения идет сразу с программой и индивидуальна для каждого приложения, в отличии от разделяемой в AIR-е).
  • Расширенные возможности работы с файлами и интеграция с десктопом - FilePromise, URLFilePromise, что позволит работать с файлами и переносить их между приложением и ОС (по сути, возможность указать URL или файл как доверенный и обработать в приложении, потом передав ОС).
  1. var items:Array = fileData.selectedItems;
  2. var promises:Array = new Array();
  3.  
  4. for each (var item:Object in items)
  5. {
  6. var filePromise:URLFilePromise = new URLFilePromise();
  7. var request:URLRequest = new URLRequest(item.url);
  8.  
  9. filePromise.request = request;
  10. filePromise.relativePath = item.name;
  11. promises.push(filePromise);
  12. }
  13.  
  14. clipboard.setData(ClipboardFormats.FILE_PROMISE_LIST_FORMAT, promises);
  15. NativeDragManager.doDrag(fileData, clipboard);

virtual_drag

  • Расширенная работа с сокетами. Это, пожалуй, самое важное и ожидаемое нововведение - создание серверных сокетов, чего ранее не умел делать Flash, зато сможет AIR (в том же Titanium это давно есть и, по моему, часто самый существенный плюс этой платформы). Для этого предназначен класс flash.net.ServerSocket.
  • Поддержка IPv6. Пока не сильно актуально, однако если ваше приложение должно работать внутри собственной сети или интранет, то может пригодится.
  • Поддержка UDP-протокола - теперь есть поддержка, кроме TCP, еще и UDP протокола, что позволит работать максимально быстро с сервисами, для которых важны минимальные задержки, остальным можно пренебречь, однако пока неизвестно, будет ли UDP поддерживаться в серверных сокетах. За UDP-сокеты отвечает класс flash.net.DatagramSocket.
  • Информация о сети. Приложение, используя класс flash.net.NetworkInfo  сможет получить гораздо больше информации о сетевом окружении. Пока правда, информация ограничивается списком доступных сетевых интерфейсов и данными о IP-адресе
  1. import mx.collections.ArrayCollection;
  2. import flash.net.NetworkInterface;
  3. import flash.net.NetworkInfo;
  4.  
  5. private var arrayCollection:ArrayCollection = new ArrayCollection();
  6.  
  7. protected function initializeHandler():void
  8. {
  9. var networkInfo:NetworkInfo = new NetworkInfo();
  10. var networkInterfaces:Vector. = networkInfo.findInterfaces();
  11.  
  12. networkInterfaces.forEach(
  13. function(element:NetworkInterface, index:int, arr:*):void
  14. {
  15. var object:Object = new Object();
  16. object.active = element.active;
  17. object.name = element.name;
  18.  
  19. if ( element.addresses.length > 0 )
  20. object.addresses = element.addresses[0].address;
  21. else
  22. object.addresses = "";
  23.  
  24. arrayCollection.addItem( object );
  25. });
  26.  
  27. dataGrid.dataProvider = new ArrayCollection(arrayCollection.source);
  28. }
  • Работа с DNS-записями и серверами. Приложение сможет получать всю информацию о произвольном домене и напрямую общаться с DNS-сервером. Видимо, стоит ожидать специальных приложений для SEO, а также платформ для киберсвоттеров.

temp

  • Приложения теперь будут обеспечены поддержкой специальных экранов и/или программ для людей с ограниченными способностями (Screen Reader). Пока этот функционал доступен только в Windows и включает в себя работу с диалоговыми окнами, а также специальные классы для Flex-компонентов.
  • Прямой доступ к микрофону и аудио-потоку. Эту возможность ожидали очень многие! Теперь записывать звук с микрофона можно без обязательного участия удаленного сервера, получая доступ к сырым данным потока в виде PCM ByteArray. Данные можно сохранять в wav-файл и проигрывать из приложения. В принципе, возможно и прямое кодирование в другой формат.
  • Встроенная СУБД получает расширенную поддержку транзакций и точек сохранения. Для этого вводятся новые функции savepoints(), setSavepoint(), releaseSavepoint() и rollbackToSavepoint().
  • Расширенные возможности по работе с системами вывода на печать. Теперь можно индивидуально указывать режим печати для каждого элемента (или страницы), в частности, задавать режим вывода (векторный или растровый), если это поддерживается ОС и драйвером. Более подробно о подсистеме печати в ActionScript 3 здесь.
  • Поддержка Idle timeout - насколько я понял, можно детектировать режим работы пользователя и определять, работает ли он сейчас с приложением или нет, например, для перевода в фоновый режим.
  1. import flash.events.Event;
  2. import flash.system.Capabilities;
  3. import flash.events.TimerEvent;
  4. import flash.utils.Timer;
  5. import flash.net.URLRequest;
  6.  
  7. private var nativeApp:NativeApplication;
  8. private var html:HTMLLoader;
  9.  
  10. private function initializeHandler():void
  11. {
  12. html = new HTMLLoader();
  13.  
  14. nativeApp = NativeApplication.nativeApplication;
  15. nativeApp.idleThreshold = 7;
  16.  
  17. nativeApp.addEventListener(Event.USER_IDLE, onUserIdleHandler);
  18. nativeApp.addEventListener(Event.USER_PRESENT, onUserPresentHandler);
  19.  
  20. html.idleTimeout = 7;
  21. html.width = 800;
  22. html.height = 800;
  23.  
  24. var urlRequest:URLRequest = new URLRequest("http://adobe.com");
  25.  
  26. html.load(urlRequest);
  27.  
  28. component.addChild(html);
  29. }
  30.  
  31. private function onUserIdleHandler(evt:Event):void
  32. {
  33. var lastUserInput:Number = NativeApplication.nativeApplication.timeSinceLastUserInput;
  34. console.text = String( lastUserInput )+" sec since last present";
  35. }
  36.  
  37. private function onUserPresentHandler(event:Event):void
  38. {
  39. console.text = "Present";
  40. }
  • Максимальный размер окна приложения  теперь расширен до 4095x4095 пикселей, что позволяет запускать AIR-приложения на больших экранах и использовать всю доступную площадь. Также  добавлена поддержка сенсорных экранов и multi-touch.
  • Работа с системами хранения - приложение через новые классы  flash.filesystem.StorageVolume и flash.filesystem.StorageVolumeInfo может получать полную информацию о всех системах хранения, дисках, логических разделах, определять возможности записи в разделы, детектировать съемные диски и флешки.
    24839f0807
  • Новые возможности для глобального перехвата ошибок, по сути try/catch блок для всего приложения вместе.
  • Профайлинг и отладчик для JavaScript-кода.
  • Профили для приложения - можно избирательно создавать профили для различных вариантов использования приложения, включая или отключая те или иные возможности. Сейчас доступны следующие профили: desktop для обычных приложений, NativeDesktop для приложений с нативным инсталлятором, mobile и extenden mobile для мобильных приложений.
  • Поддержка мобильных приложений. Да, да, ДА! Можно создавать мобильные приложения, в том числе и для iPhone - и это будут родные приложения для платформы от Apple (пока есть сложности с Flash на iPhone, Adobe просто генерирует нативный код для iPhone).
  • Обновленный движок рендеринга Webkit (такой же, как в Safari 4 beta), теперь позволяет:
    • использовать самый быстрый движок JavaScript - SquirrelFish Extreme (со множеством оптимизаций, включая полиморфное кеширование и облегченный JIT компилятор)
    • CSS трансформации (CSS Transformations)
    • CSS Transitions
    • CSS анимация (CSS Animations)
    • градиенты (CSS Gradients)
    • Быстрый Selector API для доступа к DOM-узлам (Webkit CSS selectors)

24839f0813

  • В Flash/Flex частях приложения теперь можно свободно создавать и рендерить через встроенный Webkit документы HTML, JS и даже PDF, работая со структурой документа точно так же, как с объектами AS.

Вот, пожалуй и все. По-моему, изменения отличные и позволят существенно расширить сферу применения AIR и спектр приложений. Из того, что актуально именно для меня, так это, конечно же, работа с сетью (серверные сокеты, UDP-протокол), возможность создавать нативные приложения с инсталлятором, улучшения в движке Webkit и особенно в JavaScript движке. Остается только пожелать чего-то серьезного о работе с 3D-графикой, например, WebGL и лучшей поддержки акселерации. Также я еще не уверен на счет возможностей по работе с SSL и вообще криптографией. Также хотелось бы больше встроенных библиотек, которые были бы доступны не только в Flash, но и в JavaScript API. А так - просто отлично! Ждем!

Комментирование отключено.
Developers.org.ua