Поэтому в данной статье основное внимание будет уделено разработке Flash-приложений в ОС Linux и языку haXe, ибо это именно то, что я выбрал для себя.

У вас может возникнуть вопрос: зачем Flash-программисту нужен Linux? Думаю, по той же причине, по какой он требуется любому разработчику, — это бесплатная ОС и свободно распространяемые инструменты разработки, а также возможность гибко настроить под себя и то и другое, создавая собственные инструменты. Конечно, продукты компании Adobe весьма хороши, но они довольно дороги, однако им есть интересные бесплатные альтернативы.

Средства разработки: выбор есть

Многие Flash-разработчики приняли идеологию Open Source, хотя большая часть из них все же работают в Windows. Тем не менее инструментов для разработки Flash-приложений в Linux существует предостаточно.

Впрочем, прежде чем выбирать подходящие для себя решения, следует обдумать, нужна ли вам интегрированная среда разработки (IDE) или вы будете реализовывать свой набор инструментов на базе какого-либо универсального текстового редактора.

Что лучше: IDE или редактор?

Текст программы на haXe в окне редактора IDE EclipseЕсли для работы необходима IDE, то есть два основных варианта: Flex Builder 3 фирмы Adobe (альфа-версия) и Eclipse с дополнительным модулем FDT. Оба решения платные: хотя сам Eclipse бесплатный, но FDT стоит немалых денег (около 600 евро).

 

Существует еще более экзотический вариант запуска среды FlashDevelop из-под Wine, но это, пожалуй, лучше оставить фанатам FlashDevelop. Для полноты картины следует назвать и IntellijIDEA — среду разработки для Java, поддерживающую и разработку Flash-приложений. Это также платный продукт, но он имеет лицензию OpenSource для открытых проектов. Думаю, он больше подойдет Java-программисту, решившему освоить Flash-платформу.

Если же вы готовы работать без интегрированной среды, то возможности выбора подходящего решения резко увеличиваются. Например, я строю свою систему на базе редактора vim, дополняя его плагинами и shell-скриптами. Конечно, с тем же успехом можно использовать Emacs или другой редактор, а также любой скриптовый язык. Так, я в качестве языка программирования выбрал haXe, а не ActionScript, поскольку он имеет более гибкий и лаконичный синтаксис и быстрый компилятор, а также различные приятные «фишки», но их обсудим ниже.

Если вы все-таки хотите иметь IDE, но не желаете платить за нее и готовы применять haXe, а не ActionScript, то попробуйте такой вариант: Eclipse плюс встраиваемый модуль EHX. Пока возможности этого модуля не слишком велики, но его авторы работают над ним и обещают в ближайшее время добавить полноценный отладчик.

Также стоит упомянуть проект flash4linux. Это клон Flash IDE, работающий в среде Linux. Впрочем, данный инструмент предназначен для дизайнеров, и пока еще он значительно хуже оригинала.

Как выбрать компилятор?

Выбор удовлетворяющего всем требованиям компилятора — дело, пожалуй, более важное, чем выбор IDE. Ведь по сути именно компилятор определяет возможности используемого языка программирования. Например, язык ActionScript не работает с типизированными массивами, а компилятор mtasc их поддерживает. И если вы пишете код для mtasc, значит, пользуетесь уже другим языком — ActionScript с поддержкой типизированных массивов.

Мне известны лишь два разработчика компиляторов для Flash: компания Adobe и некий француз Николас Каннассье, автор mtasc и haXe.

Компилятор Flash IDE, как и следует из его названия, штатное средство, созданное компанией Adobe. Он компилирует программы, написанные на языке ActionScript версий 1.0, 2.0 и 3.0. Компилятор не существует отдельно от Flash IDE, и, значит, его приходится приобретать вместе с ней, к тому же по достаточно высокой цене. Эффективность этого компилятора очень низкая, работает он крайне медленно. Кроме того, он функционирует только на платформах Windows и Mac OS. Данный компилятор вообще единственный из рассматриваемых, который не работает в Linux.

mxmlc — компилятор, входящий в состав Flex SDK. Компилирует ActionScript 3.0 и MXML. Это решение мультиплатформенное, открытое, бесплатное, довольно эффективное, но все же уступающее mtasc и haXe.

mtasc — свободно распространяемый мультиплатформенный компилятор. Он был основным инструментом серьезных Flash-программистов до появления ActionScript 3.0 и haXe. Сейчас он сдал вахту компилятору haXe, своему прямому потомку. Компилирует только ActionScript 2.0, но делает это так быстро и качественно, что пользоваться каким-то другим даже не хочется.

Поскольку большинство своих проектов я написал именно на второй версии ActionScript, то до сих пор пользуюсь им. Компилятор mtasc собирает проект из более чем 600 классов за 1,5 с. Flash IDE Compiler делает то же самое за 20 с. Как я уже говорил, mtasc поддерживает дополнительные возможности синтаксиса языка. Например, он позволяет писать код в конструкторе класса до вызова суперконструктора, а вот компилятор Flash IDE посчитал бы такое ошибкой.

haXe — потомок mtasc и, значит, еще одно детище Николаса Каннассье. Этот компилятор вырос в самостоятельную платформу разработки веб-приложений, довольно популярную на Западе, но практически неизвестную у нас. Для Flash-разработчика главное то, что данный язык полностью поддерживает API Adobe Flash Player версий 8 и 9 и, следовательно, его можно считать полноценной заменой компилятору mxmlc. Компилятор haXe мультиплатформенный, он распространяется по лицензии OpenSource.

Что нужно знать о haXe?

Как я уже отмечал, мой выбор пал именно на этот компилятор, и потому рассмотрим его возможности более подробно.

Текст программы на haXe  в окне редактора vimПоскольку haXe — самостоятельная платформа, то создание приложений на Flash является лишь одной из ее возможностей. На haXe можно разрабатывать и серверную часть, и настольные приложения. Основная идея haXe состоит в том, чтобы предоставить один язык программирования для разработки всех частей веб-приложения, будь то клиентская программа на Flash, JavaScript-клиент в браузере или серверное приложение. Компилятор haXe может транслировать текст программы, написанной на одном языке, в разные байт-коды и даже в код на другом языке! Код haXe компилируется в swf-файлы версий 8 и 9 Flash-проигрывателя, код на ActionScript 3.0, JavaScript, PHP и Neko-байт-код.

Поистине удивительно, что один и тот же язык программирования способен компилироваться в разные байт-коды и транслироваться в другие языки. Как охарактеризовал это один мой знакомый, «.NET наоборот».

Более полную информацию о данном компиляторе можно почерпнуть на официальном сайте haxe.org, а также на haxe.ru, где отечественные энтузиасты haXe (в том числе и я) делятся опытом.

Функции серверной части реализуются возможностями виртуальной машины Neko, так же как и сам язык Neko, разработанной Николасом Каннассье. Причем Neko может и самостоятельно работать как веб-сервер, и подключаться к Apache в виде модуля.

Конечно, на простом хостинге поддержку Neko не встретишь, поэтому для проекта на haXe понадобится собственный сервер. Чтобы избавить разработчиков от таких сложностей, Николас добавил возможность транслирования haXe в PHP-код. Пока еще эта функция находится в состоянии альфа-версии, но она войдет в haXe версии 2.0.

Что еще может понадобиться разработчику?

Серверная часть

Понятно, что swf-файл, проигрываемый во Flash-плеере, – только клиентская часть клиент-серверного приложения. В большинстве случаев при разработке приложений Flash-программисту приходится взаимодействовать с серверными технологиями. В принципе технологии могут использоваться разные, а вот способов взаимодействия с ними можно выделить лишь три:

  • Взаимодействие с веб-сервером по протоколу HTTP, аналогичное работе веб-браузера. В данном случае задача взаимодействия как раз и возложена на браузер — он посылает запросы серверу по просьбе Flash-модуля и передает обратно ответы сервера. Следовательно, здесь применяются все те же технологии, что и в веб-программировании: PHP, ASP, JSP, Perl, Ruby и даже CGI.
  • Постоянное соединение по сокету на любом порту и взаимодействие с какой-либо серверной программой-демоном. Здесь больше подойдут Java и Cи/C++. Впрочем, конечно, есть и другие варианты (я для своих проектов сделал небольшой сервер на Ruby).
  • Соединение по RTMP-протоколу. Хотя это и частный случай предыдущего способа взаимодействия, его следует выделить особо, потому что он применяется для передачи потокового видео и звука. Стало быть, данный способ будет оптимальным для мультимедийных приложений.

Медиасерверы

Flex-приложение в IDE EclipseОтдельного обсуждения требуют медиасерверы, ведь передача видео является, вероятно, одним из самых перспективных направлений для Flash-приложений.

Медиасервер обеспечивает передачу потокового видео и звука между клиентами (Flash-плеерами). Для передачи обычного видео используется формат flv, а с недавних пор (с выходом Flash Media Server 3 и Flash Player 9.0.115) появился и новый формат H.264 для видео высокой четкости.

В настоящее время Linux-программисты могут воспользоваться любым из следующих решений: Flash Media Server, Red5 или Wowza. Flash Media Server официально поддерживает только коммерческая версия RedHat, но неофициально его можно установить в любом rpm-дистрибутиве. А вот Flash Media Server и Wowza — коммерческие, закрытые продукты.

Flash Media Server — разработка компании Adobe. Замечено, что при замене версии изменяется и название этого продукта. Раньше он именовался как Flash Community Server 1.5, Flash Media Server 2.0, а теперь называется Adobe Flash Media Interactive Server 3. Это самый эффективный, производительный и стабильный сервер, способный поддерживать одновременную работу многих клиентов и много видеопотоков. Однако из-за его высокой цены приходится идти на компромисс — либо ставить Red5 или Wowza, либо пользоваться услугами rtmp-хостинга.

Для разработчиков есть и бесплатная версия, в которой число соединений ограничено десятью. Серверную часть для данного решения можно написать очень просто, использовав язык ServerSide Action Script. Он аналогичен Action Script 1.0, однако обладает некоторыми особенностями. Полагаю, Flash-разработчики легко сумеют его освоить.

Red5 — медиасервер на базе Java, разработанный сообществом OpenSource, а значит, открытый, бесплатный и, как водится, мультиплатформенный. На его базе можно (и нужно) писать на языке Java собственные медиаприложения. Вообще говоря, он представляет собой платформу для таких приложений. В Интернете встречается много хороших отзывов о нем, но из моего личного опыта работы с ним я сделал вывод, что он работает нестабильно, зависает, требует перезагрузок, да и производительность при этом низкая. Не рекомендую его использовать в тех случаях, когда вы предполагаете осуществлять больше 30 одновременных соединений с интенсивной передачей видео.

Wowza — мультиплатформенное решение, разработанное компанией Wowza Media Systems. Оно коммерческое, однако по сравнению с тем, что придется заплатить за Flash Media Server, его цена выглядит приемлемой. Этот продукт основан на базе сервера Red5, но разработчикам удалось довести все до ума, и сервер стал значительно стабильнее и производительнее. В общем, данное решение представляет собой ту самую «золотую середину», которую я рекомендую использовать.

С недавних пор RTMP-протокол также открыт, и значит, любой желающий может написать свой медиасервер, который будет взаимодействовать с Flash-плеером. Конечно, в первых рядах таких желающих окажется и Николас Каннассье. Поскольку качество его разработок очень высокое, то я уверен, что созданный им сервер haXe Video будет точно не хуже, чем Red5. И конечно, серверный код для него пишется на haXe.

По пятам за ним следует Такума Мори, выпустивший недавно медиасервер RubyIZUMI. Думаю, вы уже догадались, на каком языке программирования он написан?

Один из недостатков RTMP-протокола состоит в том, что он не поддерживает шифрование, из-за чего данные по нему передаются в открытом виде. Но эта проблема будет решена с выходом версии 10 Flash-плеера, который (как и Flash Media Server) будет поддерживать новую версию протокола — RTMFP с шифрованием данных.

Что в итоге?

Несмотря на то что флагман Flash-платформы — компания Adobe семимильными шагами движется к доминированию на рынке Rich Internet Applications и технологий передачи видео в Интернете, сообщество OpenSource легко дублирует все Flash-технологии, делая реальным существование Flash-приложений на открытых платформах.