Преимущества и недостатки 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. Ну, это дело наживное.

Комментарии

GUI библиотеки, IDE

AsWing'овский GUIBuilder, начиная с версии 1.4.2 умеет генерировать haXe код. Сам AsWing прикручивается к haXe как два пальца об асфальт при помощи того же --gen-hx-classes(см. коммент dyuss'a ниже) (по крайней мере, начиная с версии HaXe 2.0.3 отсутствуют ошибки генераций классов, связанные с оператором '...'). В качестве "мощной" GUI может использоваться FlashDevelop.

P.S. Самому мне удалось, наконец, установить adobe air в свою 64-bit ubuntu (на сайте adobe серьёзная ошибка в инструкции по установке, запорете себе библиотеки!!! местами указана /usr/lib вместо /usr/lib/win32 !!! важно!!!) и втюкнуть в неё AsWing GuiBuilder. Попробовал пользоваться - классно. нашёл ошибку в регистре букв при импортировании классов (import org.aswing.ASWingConstants; вместо import org.aswing.AsWingConstants;). А вот FlashDevelop лично поиспользовать не удалось - у меня только Linux. FlashDevelop написан на .NET, а соответственно, может запускаться в среде mono под linux. Работы в этом направлении разработчики ведут, а у меня руки поинтересоваться пока не доходят.

+2

К недостаткам стоит добавить небольшое кол-во библиотек по сравнению с популярными языками, такими как AS или PHP, и если с flash, практически все проблемы можно решить с помошью --gen-hx-classes, то с серверной стороной сложнее - не хватает готовых решений.

К достоинствам, я думаю, можно еще отнести свободность haxe. Как не крути, а это радует =)

проблема серверного haXe

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

Именно поэтому я вообще не вникаю в серверную часть haXe (тем более, что у меня с PHP нет никаких проблем), и именно поэтому в версия 2.0 поддерживает трансляцию haXe в PHP.

+2 цента

Хорошая статья, добавлю пару вещей "со своей колокольни":

Насчет "главной идеи" у меня немного другое представление. Как мне кажется, что к улучшению взаимопонимания и взаимодействия членов команды она имеет мало отношение и по задумке самого автора. Речь идёт, имхо, больше о том, что изучает и на чём пишет один человек. Николя пишет язык в первую очередь для себя как практикующего разработчика, которому приходится решать много разных задач, а заодно дарит миру результаты своего творчества.
И тут во многом, как мне кажется в будущее взгляд, на людей, которые будут стоять перед выбором что начинать изучать, если нужно делать и то, и другое и третье.
Лично меня в первую очередь именно это привлекло, так как был богатый опыт прыгания с AS на JS на PHP и обратно и иногда конкретная каша в голове по этому поводу.
Все конечно не так просто, как возможно звучит и насчёт разницы в областях и средах ты прав, но "главная идея" всё же видится мне действительно важной.

Насчёт синтаксиса, а точнее фич языка, имхо разница всё же не так уж и невелика, причём явно не в пользу AS. Очень явно это почувствовал, когда после проекта на haXe пришлось писать проект на AS3. Enum, типизированные массивы, выявление типов, typedef это только несколько из множества особенностей которые иногда очень сильно влияют на стиль, да и на скорость и удобство написания кода.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <blockcode> <dd>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].
  • Use [gist:####] where #### is your gist number to embed the gist.

Подробнее о форматировании

CAPTCHA
Для отсева спамеров)
c
g
4
t
U
c
Enter the code without spaces and pay attention to upper/lower case.