...
...

Электронная беседка. В гостях — Юрий Жлоба

Специалисты по Flash/Flex сейчас пользуются большим и устойчивым спросом, и такая тенденция будет продолжаться, поскольку сегодня эти технологии во многих сферах являются приоритетными. После недавней публикации двух материалов по программированию на ActionScript 2 ко мне пришло довольно много писем, в которых читатели просили продолжать начатое, сделать несколько уроков по ActionScript3 и побольше писать о том же Flex. Тема действительно актуальная и, если честно, довольно широкая.

В рамках сегодняшней электронной беседки у нас во второй раз в гостях Юрий Жлоба, который уже знаком нашим читателям по интервью о медиасерверах, Erlang и erlyvideo. Нужно сказать, что выбор в качестве собеседника по Flex’у пал на него неспроста, потому как программист, способный доступным языком излагать свои мысли, — это все-таки большая редкость. Причем Юрий ведет очень интересный и популярный сайт www.yzh44yzh.com, в рамках которого пишет интересные статьи, предоставляет коды, делится впечатлениями о посещенных специализированных мероприятиях.

Перед тем как составить список вопросов, я посетил несколько интернет-форумов Flash/Flex-разработчиков, где нашел очень много разнообразной информации. И поскольку нас читают и новички в теме, попробуем отделить зерна от плевел. Итак, поехали.

— Вообще, если говорить образно, сейчас Flex конкурирует в основном с Java. Какие главные плюсы и минусы у каждой из сторон ты бы выделил?





— Тут небольшая ошибка, Flex не конкурирует с Java:). Java — язык общего назначения, Flex — фреймворк для AS3, выполняющий довольно узкую задачу. Не могут они конкурировать:).

Flex — хороший инструмент для построения пользовательских интерфейсов, и вообще для разработки клиентской части. Java обычно используется на сервере. Сейчас вряд ли многие пишут на Java клиентскую часть. Так что они не конкурируют, а прекрасно сочетаются. Можно даже смело сказать, что Flex изначально создан для того, чтобы сочетаться с Java на сервере.

— В этом году третьей версии языка ActionScript исполнилось пять лет. Если честно, когда увидел ее в первый раз, я (и не только я) сразу подумал о сильном подобии с Java. Сейчас ведь программистами используются различные варианты трансляции с первого языка на второй, какие из них (вариантов), с твоей точки зрения, являются наиболее удачными и востребованными?

— Да, AS3 похож на Java. Особенно, если сравнивать с AS2, который гораздо ближе к JavaScript, чем к Java. Думаю, AS3 намеренно делали похожим на Java. Это облегчило его продвижение в энтерпрайз.

Насчет трансляции с AS3 на Java, не знаю. Вряд ли это сильно востребовано. Языки решают разные задачи в разных предметных областях. Поэтому редко возникает необходимость получить идентичную логику на AS3 и на Java. Может быть, только где-нибудь в геймдеве, когда бывает нужно иметь идентичные игровые алгоритмы и на клиенте, и на сервере.

Или можно взять ситуацию с разработкой на Flex под Андроид. Но и там AS не транслируется в Java-код, а компилируется непосредственно в байт-код для виртуальной машины Андроида.

— На самом деле, сейчас много говорят и пишут о портировании Flash-приложений на JVM, например, для той же платформы Android. Вообще, реально ли удерживать основной блок кода в рамках AS3?

— Ну да, уже упомянул об этом. Насколько я знаю, только для Андроид такое и делают. Надо понимать, что проще и удобнее использовать нативные средства для разработки под Андроид. Оно и по возможностям богаче, и по эффективности приложения лучше. Пока Flex имеет доступ далеко не ко всем API платформы, хотя Adobe активно работает над этим. Распространение флэш-технологии на мобильные платформы — основной приоритет компании. Вот, если планируется делать разные версии одного приложения под разные платформы (веб, десктоп, мобильная), то, конечно, основную версию и основной объем кода лучше иметь в AS3. И по возможности использовать этот код для других платформ, чтобы не писать его заново на другом языке. Что же касается компиляции AS3 в Java байт-код, то это не особо интересно. И так уже имеется несколько весьма разных языков, которые компилируются в Java байт-код: Scala, Groovy, JRuby, Scheme. Так что программисту есть из чего выбрать. Добавить сюда AS3, так он погоды не сделает. Честно говоря, было бы интереснее иметь парочку языков, кроме AS3, компилирующихся в байт-код флэш-плеера:).

— Какой у тебя инструментарий программиста на сегодня?

Основная ОС: Debian (приходится использовать 32-разрядную, ибо для 64-разрядной нет дебаг-версии флэш-плеера).
Дополнительная ОС: MacOS (иногда использую для некоторых специфических задач).
Среда разработки: Intellij IDEA Ultimate с плагинами для Scala, Bash, Erlang.
Основные языки программирования: AS3/MXML, Java, Erlang, JavaScript/HTML/CSS.
Дополнительные: Bash, Scala, PHP, SQL.
Контроль версий: Git, Subversion.
Инструменты сборки: Maven, Bash.

— Если в процентном соотношении, то какого рода проекты сейчас наиболее часто делаются на базе Flex'а? Какие из них являются наиболее сложными?

— В основном Flex используется в энтерпрайз-проектах, для которых он, собственно, и создавался. Но можно использовать везде, где требуется строить сложный пользовательский интерфейс из набора типовых контролов.

Со сложностью проектов это слабо связано. Энтерпрайз-проекты, как правило, сложны. Уже хотя бы потому, что велики по масштабу. Но при этом клиентская часть может быть несложной. А может быть весьма мудреной:).

— Вообще, если присмотреться внимательнее, то новые технологии от Adobe не так быстро внедряются в последние годы. Например, еще в 2006-2007 гг. говорили о глобальном приходе MXML и связанной с ним грядущей перестановке на рынке веба, потом AIR, затем не очень понятная ситуация с RTMP и медиасерверами, сейчас внедрение 3D-графики во Flash-приложения... Что, по твоему мнению, нам ждать от Flex в будущем?

— А что, кто-то ждет, что технологии Adobe вытеснят все остальное и будут везде доминировать? Это невозможно хотя бы потому, что 99% веба сделано на HTML/JavaScript, и это никто ничем не вытеснит:).

Технологии развиваются нормально, не хуже любых других. Конечно, не везде идет гладко, ну, так, а чьи технологии идеальны?:).

Сейчас очевидно, что Adobe продвигают Flex на мобильные платформы. Работы здесь очень много, и ближайшие годы Adobe будут заняты этим. Может быть, даже в ущерб другим направлениям.

Например, Adobe уже несколько лет никак не могут развить Flash Builder до уровня других IDE, он сильно отстает. Но это из-за того, что приоритеты другие:).

Вообще-то в этом желании все вытеснить, чтобы везде был AS3, и чтобы он компилировался в Java байт-код, и работал на мобильниках и т.д., я вижу ленивого AS3-программиста, который не хочет ничего больше изучать, но хочет, чтобы ему на блюдечке подали весь IT-мир. Ну что ж, желание неплохое. И лень сама по себе тоже штука неплохая. И я думаю, что единая универсальная технология "для всего", которая все вытеснит и станет для всех стандартом, рано или поздно появится. Но это случится лет через 50, не раньше:). Так что планируйте свое самообразование и свою карьеру исходя из того, что монополии AS3 (или любого другого языка) при вашей жизни не будет:).

— Расскажи, пожалуйста, об использовании связки Maven (с Flexmojos) плюс Intellij IDEA во Flex-проектах. Она является сейчас наиболее актуальной?

Ну, это интересный момент. Дело в том, что энтерпрайз-разработка консервативна, использует проверенные временем вещи от больших и надежных вендоров. Поэтому, конечно, 99% флекс-разработчиков будут использовать инструменты разработки от Adobe. А если даже какой-то разработчик и захочет попробовать экзотики, то работодатель ему не позволит.

На инструменты от малоизвестных вендоров (Intellij IDEA) работодатель посмотрит косо. А инструменты от разработчиков-одиночек, перманентно пребывающие в недоделанном состоянии (Flexmojos), работодатель и вовсе запретит. И правильно сделает.

При том, что такие инструменты могут быть значительно удобнее и мощнее, пользуются ими немногие. В основном это небольшие команды или разработчики-одиночки, имеющие определенную свободу выбора.

Так что, если вы хотите строить карьеру в большой (западной) компании, выбирайте Flash Builder. А если хотите эффективно работать и быстро создавать продукт — выбирайте Intellij IDEA:).

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

— Вот именно. Инструменты разработки оказывают большое влияние на проект. И на его структуру, и даже на его архитектуру. Например, IDEA и Maven поощряют модульность и позволяют легко сочетать разные технологии (помимо Flex) в одном проекте.

— В принципе, меня уже несколько веселит, что для ActionScript 3 появились шаблоны проектирования. С одной стороны, как мне кажется, это значит, что язык уже достаточно захламлен, с другой — он не имеет определенного концептуального приложения, то есть является «широкого профиля». Или все наоборот?

— Шаблоны проектирования по сути своей универсальны, не привязаны к конкретному языку. Соответственно, их можно реализовать и на AS3 тоже. Это не говорит о том, "захламлен" язык или нет. Это говорит только о том, что кому-то понадобилась реализация шаблонов на AS3, и этот кто-то ее сделал.

Я не возьмусь давать субъективные оценки насчет концептуальности и захламленности AS3. Но то, что он не является языком универсального назначения (широкого профиля), очевидно. Например, потому, что в AS3 нет многопоточности. Пожалуй, в нем нет такой четкой идеи, как, например, в haXe или в Erlang. Но это не делает язык хуже.

— Нас сейчас читает множество начинающих и обычных программистов, если бы они проявили желание изучать Flex как таковой, с чего бы ты им порекомендовал начинать (литература, сайты, технологии)?

Мне очень понравилась книга Питера Армстронга "Hello! Flex 4" http://www.amazon.com/Hello-Flex-4-Peter-Armstrong/dp/1933988762. Весьма рекомендую. Ну, а потом читать официальный хелп от Adobe в контексте решения конкретных задач:).

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

И еще, конечно, нужно обязательно участвовать в конференциях. И в роли слушателя, и в роли докладчика:). Конференции способствуют расширению кругозора и развитию коммуникативных навыков (с чем у программистов бывают проблемы).

— А также укажи, пожалуйста, направления, в которых будет наибольший спрос на Flex-программистов в ближайшее время, с твоей точки зрения.

— Энтерпрайз-разработка в крупных компаниях и мобильная разработка в компаниях любого размера:).

— Спасибо за интервью!

Вместо завершения

Ну а нас с вами ждет серия по Lua в связке с С/С++/С#. Что касается материалов по AS3, то хоть их и не планировалось делать, но судя по откликам на статьи по AS2, все-таки имеет смысл написать небольшой цикл на базе конкретного примера, который мы, скорее всего, возьмем из реальных заказов на рынке фрилансеров и реализуем его. Также стоит отметить, что в «Компьютерной Газете» выходила интересная серия моего коллеги black- zorro «Red5: практика работы с потоковым мультимедиа», в которой демонстрировалась привязка Flash-клиента к медиасерверу Red5 по протоколу RTMP.

Кристофер http://itcs.3dn.ru



© Компьютерная газета

полезные ссылки
Обзор банков Кипра
Обзор банков Кипра