Преимущества и недостатки haXe в сравнении с Flex-AS3-MXML

Кратко и сухо

Преимущества:

  • замысел -- один язык -- много платформ;
  • API флэш-плеера доступно в полном объеме;
  • можно использовать Flex-фреймворк;
  • значительное количество библиотек, в том числе 2 gui-библиотеки: arctic и fcomponentsfx;
  • язык более гибкий и лаконичный, с дополнительными возможностями оптимизации;
  • быстрый компилятор (заметно быстрее, чем mxmlc);
  • активное сообщество (англоязычное);
  • полная (но лаконичная) документация;
  • быстро обновляется в след изменениям флэш-плеера;

Недостатки:

  • никаких недостатков нет! Шутка :)
  • нет мощной IDE, сравнимой с Eclipse или Flex;
  • нет отладчика;
  • нет визуального gui-построителя;
  • gui-библиотеки уступают по возможностям библиотеке mx;
  • отсутствует русскоязычное сообщество;
  • в сравнении с документацией по Flex, AS3, документация haXe слишком скудная;

А теперь обо всем этом подробнее.

Итак, основной замысел haXe состоит в том, что один и тот же язык программирования компилируется (или транслируется) в несколько разных целевых платформ:

  • swf-файл 8й версии;
  • swf-файл 9й версии;
  • ActionScript3.0 код;
  • JavaScript-код;
  • Neko-байт-код;
  • PHP-код;

Ценность этого подхода в том, что команда разработчиков использует один язык для разработки всех частей системы: клиентской-флэш части, клиентской JavaScript части, серверной части. По идее, это должно улучшать взаимопонимание и взаимодействие членов команды. Так позиционирует язык сам Николас, но я не очень в это верю. Разработка клиентской и серверной части отличается не только синтаксисом языков программирования. Слишком велика разница в прикладных областях и средах, в которых функционируют программы. Так что синтаксис тут дело десятое. Но раз уж это главная идея haXe, то ее я и поставил на первое место в списке достоинств.

То, что API флэш-плеера полностью доступно -- очень важный момент. Это значит, что разница между haXe и Flex-AS3-MXML есть только в процессе разработки. А результаты разработки -- swf-файлы, одинаковые. И все, что можно сделать на Flex, можно сделать и на haXe. Вот это для меня и есть главное достоинство haXe.

Flex-фреймворк и mx-классы подключаются не совсем простым способом. То, что они вообще подключаются, это достоинство. Но то, как они подключаются, это недостаток. Вообще же, разработка на haXe не подразумевает использование Flex-фреймворка. Вместо него существует большое количество собственных библиотек. Думаю, Flex-программистам, использующим pureMVC, будет интересно узнать, что этот фреймворк уже портирован на haXe.

Что касается синтаксиса языка, то он не сильно отличается от ActionScript, но имеет свои приятные фишки. С ним можно познакомиться на haxe.ru/reference-book.

Сообщество haXe действительно активно. В списке рассылки много обсуждений, в которых часто участвует сам Николас. Там охотно помогают новичкам, отвечая даже на дурацкие вопросы.

Документация по haXe существует в форме wiki (как и весь сайт haxe.org). Она полная -- описаны все классы, как специфичные для разных платформ (Flash8, Flash9, JavaScript, Neko), так и универсальные. И есть много материалов, типа "быстрый старт", помогающим новичкам начать работу с haXe. Документация переводится энтузиастами на многие языки.

Ну вот, теперь, выпятив достоинства, постараюсь скрыть недостатки. Вы же не думаете, что это объективная статья? :)

Нормальная IDE скоро будет. Сразу в комплекте с отладчиком. Это будет Eclipse с плагином EHX. Вернее сказать, этот плагин есть уже и сейчас, только он пока мало на что годен. Долгое время проект казался мертвым -- текущая версия 0.0.3, последняя новость на сайте за октябрь 2006 года. Но в мае разработчики появились в списке рассылки haXe и пообещали, что работа ведется, в скором времени плагин обновится, и там будет отладчик.

Визуального gui-построителя нет, и вероятнее всего в ближайшие несколько лет не будет -- этот вопрос как-то не заботит haXe-сообщество. Но и без него можно жить.

gui-библиотеки, конечно, будут расти и развиваться. И несомненно будут появляться новые.

Документация достаточна для того, чтобы освоить эту технологию. На мой взгляд, в ней нехватает примеров кода, как это есть в документации по ActionScript. Ну, это дело наживное.