Кто-то считает, что использовать флеш неперспективно. Очевидно, однако, что списывать его со счетов по-прежнему рано. Попытаюсь не быть голословным и далее по пунктам систематизировать все те события и ключевые моменты, которые в той или иной степени повлияли или, по мнению многих, еще могут повлиять на дальнейшую судьбу Flash Platform.
1. Баннеры: Adobe Flash vs HTML5
Есть мнение, что в качестве средства для разработки баннеров флеш постепенно уступает позиции HTML5. Слухи - слухами, но, действительно, в Adobe Flash Professional CS6 появилась возможность экспортировать флеш-анимацию в HTML5 + JavaScript при помощи расширения Toolkit for Create JS. Предварительно просмотрев промо-видео на сайте Adobe, установив требуемое расширение и выбрав "жертву" из числа недавно созданных Flash-баннеров, я решил самостоятельно опробовать новые возможности ознакомительной версии Flash IDE по части заявленного преобразования Flash в HTML5. Интересно было увидеть, что изменилось в этом направлении за последний год. Попытка конвертировать баннер привела вот к такому неожиданному для меня результату:
Очевидно, что даже полное отсутствие ActionScript-кода не является достаточным для безболезненного преобразования объектов и анимации относительно несложного баннера в формат HTML/CSS/JavaScript. Adobe Wallaby Technology (есть такая штука в Adobe Labs, аналогичная по назначению, только выполненная в виде отдельного приложения и использующая jquery вместо Create JS Toolkit) тоже не справилась с задачей и выдала примерно такой же результат. Swiffy от Google на фоне предыдущих попыток смотрелся чуть лучше:
Ну, хорошо: допустим, разработчику баннера можно смириться с отсутствием поддержки ActionScript 3.0 - благо, предыдущая версия скрипта позволяет без проблем реализовать среднестатистический баннер. К тому же в этом случае его (баннер) будет проще адаптировать под запросы CreateJS: все-таки ActionScript 2.0 по своей архитектуре ближе к JavaScript, чем его преемник ActionScript 3.0. Но что делать с размером файлов данных, который мы получаем на выходе? Вместо компактного файла размером 60 Кб теперь в сумме мы имеем свыше 600 Кб HTML и JavaScript. Десятикратное увеличение размера - согласитесь, для баннера это уже чересчур.
Создается странная и нелогичная ситуация: с одной стороны, можно успешно (пусть и с некоторыми ограничениями) разрабатывать и адаптировать Flash-баннеры для HTML5, однако технические требования баннерных площадок не позволяют их использовать из-за большого "веса". С другой стороны, можно было бы писать, например (гипотетически), игры и приложения на Flash, используя множество существующих библиотек и наработок, а потом конвертировать результат в HTML5/JavaScript, но... ни один из опробованных конвертеров не поддерживает ActionScript 3.0, без которого этот вариант теряет смысл. Проекты вроде Jangaroo я сознательно обошел стороной, т.к., во-первых, их обзор выходит за рамки данной статьи, а во-вторых (забегая вперед), они тоже имеют ряд специфических проблем.
Вывод напрашивается сам собой: даже в качестве средства для разработки баннеров флеш еще долго будет оставаться актуальным. Про сравнительное удобство и, следовательно, скорость разработки приложений, равно как и кросс-браузерную совместимость, вообще скромно умолчу.... А ведь есть еще Adobe AIR!
2. "Новый" старый игрок: Adobe AIR
Учитывая тенденции по сокращению направлений разработки в области Flash компанией Adobe, Adobe AIR, на мой взгляд, является самым надежным кандидатом на преемственность постепенно отходящего на второй план Flash Player для браузеров. AIR позволяет использовать весь арсенал существующих технологий, доступных в рамках Adobe Flash Platform, а также дальновидно ориентирован на мобильные устройства.
Что же это такое: Adobe AIR? Как показывает практика, интернет-сообщество, не имеющее отношения к компании Adobe в общем и к разработке для платформы Adobe Flash в частности, никак не связывает понятия "Flash" и "AIR", и лишь немногие имеют смутное представление о том, что представляет из себя данная технология. Поэтому начнем с небольшого ликбеза.
2.1. Что такое AIR?
Технология Adobe AIR (Adobe Integrated Runtime) зародилась как альтернатива "браузерному" Flash Player более четырех лет назад. В какой-то момент в компании Adobe решили, что возможности платформы Flash позволяют создавать не только баннеры и casual-игры, но и серьезные приложения, т.н. RIA (Rich Internet Applications). Старания Adobe, направленные на дальнейшее развитие Flash-технологии, принесли свои плоды и позволили вывести RIA на новый, недостижимый ранее, уровень. Этому значительно способствовала популярность Adobe Flex Framework. Единственным достойным конкурентом Flash на поприще RIA была технология Java, но, благодаря вышеупомянутому Flex Framework, а также тесной интеграции с такими серверными технологиями, как Java и PHP, разработка RIA на Flash обходилась существенно дешевле.
Поскольку выполнение содержимого Flash происходит, по аналогии с Java, внутри т.н. виртуальной среды выполнения (виртуальной машины), следующим логичным этапом развития Flash стало создание кроссплатформенной среды, которая позволила RIA-приложениям выполняться вне браузера, расширив их возможности за счет доступа к локальным ресурсам операционной системы (ОС). Так родилась технология, которая получила название Adobe AIR (ее релиз состоялся 25 февраля 2008 года).
Так чем же отличается Flash-приложение, работающее в браузере, от AIR-приложения? Да, по большому счету, ничем: разработчик может легким движением руки, не изменяя код, сделать из Flash-сайта приложение AIR и разместить его в Apple App Store, Android Market, BlackBerry App World или, к примеру, в Intel AppUp. Сайт превратится в кроссплатформенное приложение, которое можно скачать и установить на различных устройствах: от PC под управлением Microsoft Windows или Maс OS до Apple iPhone, коммуникатора с ОС BlackBerry или Android - т.е.везде, где поддерживается технология Adobe AIR. Это приложение будет работать точно так же, как любое другое, т.е. для работы ему будет не нужен браузер: кликнули по ярлыку на рабочем столе - запустили приложение. Это основное отличие Adobe AIR от Adobe Flash Player для браузера. Следует отметить, что, в отличие от сайта, приложение предварительно нужно скачать, установить и запустить. Так же, как это происходит с любыми другими приложениями для iOS, Android, BlackBerry, PC и Mac. Логично, не правда ли?
После заявления Adobe о прекращении разработки Flash Player для мобильных браузеров дружно возобновились (в очередной раз) разговоры о "смерти" Flash. На деле же Adobe снова сделала экономически обоснованный шаг: избавилась от необходимости распылять силы на поддержку Flash Player для неуклонно растущего количества браузеров мобильных ОС. Давайте на минуту поменяемся ролями с компанией Adobe и попробуем прикинуть варианты затрат на развитие технологии Flash, взяв за исходные данные три мобильные системы, на которых она сейчас работает:
- iOS
- Android
- BlackBerry
Вариант № 1 - AIR: три системы = три варианта реализации виртуальной машины (читай: три варианта Flash Player, по одному для каждой мобильной ОС). Тут все, вроде бы, ясно.
Вариант № 2 - Flash Player для мобильных браузеров (по одному варианту Flash Player для каждого браузера):
- iOS - Safari, Google Chrome, Atomic, Skyfire, Mercury, Opera Mini, Perfect Browser, iCab Mobile, Grazing и... достаточно, пожалуй.
- Android - Google Chrome, Dolphin Browser HD, Firefox, Opera, Miren Browser, Skyfire, Angel Browser и т.д.
- BlackBerry - стандартный браузер, Opera Mini, Maxthon, Web Viewer, SmyleSafe, UC Browser...
Да, от такого может закружиться голова. Лично я как программист, у которого есть опыт разработки native-приложений, не представляю, как можно поддерживать проприетарную технологию с такими объемами модификаций исходного кода, да еще с учетом несметного количества версий отдельных браузеров и ОС. Если уж рассуждать о предпосылках т.н. "смерти" Flash, то подобный вариант в качестве "убийцы" выглядит гораздо убедительней. Так что, конкретно в этом случае, Adobe, с моей точки зрения, сделала единственно верный шаг, прекратив поддержку Flash в мобильных браузерах и сконцентрировав усилия на AIR. Тем более, что добиться приемлемой производительности Flash Player в мобильных браузерах - задача практически невыполнимая, т.к. на сегодняшний день они попросту не рассчитаны на работу с полноценными RIA, требующими значительных ресурсов по сравнению с обычным статичным веб-контентом. С такой задачей в состоянии справиться только полноценная виртуальная машина, хорошо оптимизированная, активно использующая возможности мобильной ОС и лишенная дополнительной прослойки в виде браузера, который "съедает" часть и без того дефицитных ресурсов. Да, я сейчас говорю об архитектуре Adobe AIR.
Что же мы имеем в настоящий момент? Adobe AIR активно развивается и работает на большинстве современных платформ: Microsoft Windows (XP, Vista, 7 и 8), Mac OS X (PowerPC и Intel), Linux (только для 32-х битных процессоров x86), QNX, iOS, BlackBerry OS и Android. К сожалению, по маркетинговым соображениям Adobe отказалась от дальнейшей поддержки AIR для Linux, поэтому последней доступной для этой системы версией AIR является версия 2.6.0. На мой взгляд, шаг пусть и понятный, но недальновидный.
2.2. AIR и мобильные приложения
Начну с того, что большинство потребностей мобильного приложения, таких как отображение web-контента (HTML + CSS + JavaScript), доступ к локальной файловой системе, фото- или веб-камере, микрофону, датчикам Geolocation и Accelerometer, обработка касаний и жестов (Touchscreen) покрываются средствами самого AIR без необходимости обращения к каким-либо нативным API. На данный момент производительность AIR-приложений является достаточной для удовлетворения подавляющего большинства запросов пользователя (при условии, что приложение разрабатывалось с соблюдением рекомендаций Adobe по оптимизации архитектуры и производительности мобильных приложений AIR). Кроме того, существует мобильный Flex Framework, который сильно упрощает жизнь разработчику. А для "хардкорщиков" появилась возможность компилировать в отдельные библиотеки native-код и использовать эти библиотеки в AIR-приложениях (т.н. Native Extensions). Это серьезный шаг на пути повышения производительности приложений, которая до недавнего времени была одной из главных проблем AIR. Native Extensions открывают новые перспективы для AIR-приложений, например, делают возможным использование архитектуры "толстый клиент", а в ряде задач позволяют вообще отказаться от варианта реализации "клиент-сервер".
На сегодняшний день запрос вида "adobe air apps" в Google Play выдает более тысячи результатов - это вполне серьезный показатель развития технологии. С Apple App Store дела обстоят чуть хуже, т.к. все-таки лицензия у них дороже и требования жестче, но сдвиги определенно есть. На фоне недавнего "на iOS не будет Flash" ситуация выглядит более, чем оптимистично.
2.3. AIR и разработка игр
В настоящее время разработка Flash-игр является серьезной индустрией. Она обеспечивает большой охват аудитории за счет распространения через веб и, в частности, через социальные сети. Чтобы представить себе ее современные объемы, достаточно перечислить лишь несколько крупных игровых порталов, специализирующихся на издании и разработке Flash-игр: Kongregate, Armor Games, Arcadebomb, Flash Game Nexus.
Игровую индустрию можно, фактически, назвать "линией фронта", т.к. она молниеносно реагирует на появление новых возможностей и технологий. Например, в течение последнего года, после выхода Flash Player 11.0, в рамках гейм-разработки активно осваивается трехмерная графика как инструмент для создания многопользовательских игр ("Танки онлайн", бета-версия "Dead Zone: The Last Stand" и т.д.); активно развиваются физические и трехмерные графические движки (Papervision 3D, Away 3D, Alternativa 3D и т.д.). И вот тут конкуренцию Adobe AIR составить непросто, т.к., в числе прочих достоинств, у него есть целый ряд ценных для "игроделов" качеств: изначальная мультимедиа-ориентация Flash-технологии, удобство и скорость разработки, кроссплатформенность. Единственный, кто так же хорошо чувствует себя на рынке игростроения, это, пожалуй, Unity, но это все-таки в первую очередь инструмент, предназначенный для создания игр, а не универсальная технология.
2.4. Интерфейсы для интерактивных устройств с тачскрин/мультитач
Еще один возможный аспект применения AIR, про который почему-то достаточно редко упоминают, - это создание интерактивных интерфейсов (в том числе и трехмерных). Технология Adobe AIR обеспечивает полную поддержку мультитач-устройств, а Flex Framework на сегодняшний день является одним из самых совершенных средств для разработки GUI. Кроме того, существуют и другие готовые к использованию библиотеки, позволяющие быстро и эффективно реализовать GUI практически любой сложности: Alternativa GUI + Alternativa 3D + Alternativa Physics. Сюда же можно отнести и Haxe/NME (здесь и здесь) как инструмент для решения специализированных задач.
3. Интерактивные приложения, использующие трехмерную графику
Интерактивные приложения, использующие трехмерную графику, я выделил в отдельную категорию, потому что это действительно очень интересная область, позволяющая по-новому преподнести привычную информацию, будь то онлайн-презентация или каталог товаров. С учетом поддержки аппаратного ускорения графики эта технология с одинаковым успехом может использоваться в любом сегменте разработки: настольные и мобильные приложения, веб-сайты, презентации, баннеры, интерфейсы.
Вот несколько примеров, которые ярко демонстрируют текущий уровень развития Flash 3D. (Обратите внимание: для просмотра нужен FlashPlayer 11.0 или выше.)
www.alternativaplatform.com/swf/demos/mobilephone/mobilephone.swf
www.aerys.in/minko (иконки демонстрационных приложений находятся справа).
Подводя итог, можно сказать, что для уверенности в завтрашнем дне Flash-разработчику, помимо владения ActionScript 2.0/3.0, понадобится следующее:
- Опыт работы с Adobe AIR.
- Опыт работы с Flex Framework.
- Опыт работы с Apache Maven и Sonatype FlexMojos (куда же без них).
- Опыт разработки мобильных приложений на AIR.
- Опыт работы с трехмерной графикой для Flash (Stage 3D, AGAL, Away 3D, Alternativa 3D, Minko и т.д.).
- Знание HTML5/CSS/JavaScript.
- Опыт работы с haXe/NME (желательно).
Было бы неверным говорить об Adobe Flash как о технологии, которая отмирает, сдавая позиции под напором HTML5 и открытых стандартов. Хоть политика Adobe порой и вызывает недовольные гримасы на лицах красно-бело-черной команды Flash-разработчиков, отражаясь тысячами горестных постов в блогах и форумах, действия компании нельзя назвать нелогичными и непоследовательными. Последние два года были отмечены множеством событий, как неприятных, так и обнадеживающих, но однозначно свидетельствующих о том, что Flash Platform продолжает интенсивно развиваться и снижения темпов развития отнюдь не наблюдается. Новые версии AIR выпрыгивают, словно горячие пирожки из печки, радуя расширяющимися возможностями и стабильным ростом производительности мобильных приложений; Flash Player продолжает активно бороздить необъятные просторы трех измерений с аппаратной поддержкой; Apache осваивает внезапно свалившееся на нее счастье в виде Open Source Flex SDK. В общем, ждем Dolores.
Что за Dolores, спросите вы? Дать исчерпывающий ответ на этот вопрос могут только представители Adobe. Я же, со своей стороны, сославшись на официальный источник, могу лишь добавить, что компания уже спрогнозировала будущее Flash Platform на следующие 5-10 лет, и будущее это внушает исключительно оптимизм.
Павел БЕЛИНСКИЙ,
флеш-программист Red Graphic
Об авторе:Павел Белинский Образование: высшее техническое (инженер-конструктор-технолог электронно-вычислительных средств). Стаж работы в IT: 12 лет. Опыт работы с Adobe (Macromedia) Flash: более 10 лет. В настоящее время работает в интерактивном агентстве Red Graphic |
Комментарии
Ну это и так понятно, что Flash быстро не умрет. Но и развиваться уже активно не сможет - будет на задворках, как Кобол и Дельфи.