Рубрики: Java, JavaFX
JavaFX наносит ответный удар
Май оказался очень богатым месяцем на события, связанные с RIA, Это и Open Screen Project, это и выход семейства инструментов Expression версии 2, это и конференция ReMIX от Microsoft. За всем этим мы немного забыли о том, что в это самое время проходит конференция JavaOne 2008, которая обещает множество докладов по JavaFX. И как всегда Sun поражает тем множеством новшеств, которые нас ждут по части JavaFX.
Ну во-первых, в дополнение к коммбюнити-сайту OpenJFX запущен сайт JavaFX.com. Помимо того, что сайт очень качественно и интересно сделан с использованием AJAX, он содержит множество воодушевляющей информации и видео:
- Объявлено о расширении линейки инструментов для работы с JavaFX. Помимо инструментов для разработчиков (плагин для NetBeans, а позже и развитие плагина для Eclipse) сюда будут включены инструменты для графических дизайнеров. Это и специальная среда JavaFX Designer, которую обещают сделать доступной уже этой весной, и плагины для Adobe Photoshop и Adobe Illustrator. То есть пресловутый designer-developer workflow тоже не остался в стороне. Yes!
- По части медиа-возможностей будет предоставлен JavaFX Media Framework, который в том числе позволяет проигрывать одновременно 200 Blu-ray HD-видео, как это продемонстрировано в приложении Video Cloud. Также летом 2008-го будет представлен JavaFX Media Converter.
- Известно, что в конце 2008-го нас ждет версия 1.0 JavaFX Desktop, а весной 2009-го - JavaFX Mobile. Далее в планах Sun JavaFX TV и другие платформы для других устройств.
- Интересно, что браузерные JavaFX-приложения могут взаимодействовать с десктопом (например, можно перетащить приложение из браузера на десктоп, и оно останется там жить).
- После выхода версии JavaFX 1.0 будут объявлены планы по открытию исходных кодов всех составляющих платформы. Сейчас открыты только некоторые части. Но то, что JavaFX будет опенсорсной - определённо.
- Ну и понятно, что в качестве GUI-компонент используется тот же самый Swing и что при разработке приложений на JavaFX вы можете использовать тот же самый Java-код, который вы написали ранее.
Также на JavaOne были показаны некоторые демки, одну из которых (виджет для Facebook под названием Connected Life, который может перетаскиваться на десктоп, а также жить в мобильном телефоне) можно посмотреть на видео, взятом из блога Райана Стюарта:
Так что не списывайте JavaFX со счетов!
Отчет о встрече RAFPUG в Питере в День Космонавтики
Ну вот наконец я созрел для того, чтобы написать небольшой отчет по прошедшей 12 апреля 2008-го года первой питерской встречи Русскоязычной Группы Пользователей Flash-платформы от Adobe (Russian Adobe Flash Platform User Group).
Как я уже писал ранее, встреча проходила в ресторане «Эрмитаж» прямо на Дворцовой площади в Арке Главного Штаба. Таким роскошным местом проведения мы обязаны фирме Flexis и лично Артемию Малкову, который приехал из Москвы на эту встречу. Но, понятно, что их участие в организации, равно как и участие докладчиков, нервно меркли в сторонке по сравнению с беспрецедентной поддержкой мероприятия российским офисом Adobe, которая, по информации, выразилась в пресс-релизах мероприятия. Скажем дружное спасибо организаторам!
После того, как все немного потусовались-пообщались перед входом, началось освоение места встречи. Оказалось, что не только место было выбрано таким замечательным, но еще и внутри нас ожидала помимо пищи духовной еще и пища телесная в виде небольшого фуршета от фирмы Flexis (ну и не забываем про поддержку от Adobe в виде пресс-релиза!).

Да. Народу было на удивление много, что радует. После небольшой подготовки, с опозданием всего в полчаса, решили начать. Тем более, что уже даже докладчики собрались почти все (кроме Саши Гахова, который отлаживал демку в одном из питерских кафе).
Начала Юля Николаева aka Junique.

Живо и увлекательно Юля рассказала о множестве различных аспектов связывания данных во Flex. Как и обещалось, встреча сразу приобрела жестко-девелоперский оттенок. Так что слушатели, не знакомые с темой, слушали в священном ужасе. Очевидно мало что понимая. Думается, что на следующих встречах мы постараемся учесть пожелания слушателей, о чем речь дальше. Так или иначе, но забегая вперед, скажу, что те, кто как раз хотел послушать жесткий девелоперский материал, остались довольны. Так что хоть раз им угодили ![]()
Понятное дело, что такой интересный доклад вызвал вопросы, на которые Юля с удовольствием ответила.
Ниже приведу саму юлину презентацию:

| View | Upload your own
Также презентацию можно скачать.
Кстати, Юля начала выкладывать серию постов по следам прочитанного ею доклада.
После небольшого перерыва Павел Кожин aka Vertex поведал нам об архитектуре визуальных компонент Flex-фрэймворка.

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

| View | Upload your own
Презентацию Павла Кожина aka Vertex «Жизненный цикл компонент во Flex (Component Lifecycle Overview)» также можно скачать.
В перерыве желающие могли наблюдать самогонный аппарат, который расположился в туалете ресторана.

На доклад, касающийся совсременных тенденций разработки клиент-серверных приложений на базе JEE с использованием Spring и Hibernate, остались самые стойкие. Но тем не менее народу в зале хватало.

Ограниченный по времени (мероприятие было заявлено до четырех, а Саша начал уже полчетвертого), Александр Гахов aka Agahov, приехавший из Москвы, вынужден был ограничиться и в количестве показываемых демок, которые и составляли суть его доклада.

Тем не менее, тематика этого доклада была для многих, пожалуй, самой интересной. Саша показал использование Maven, попытавшись рассказать о его безоговорочных преимуществах перед Apache Ant. Он показал как с помощью Maven деплоить BlazeDS-приложения на Tomcat, как использовать Hibernate и на примере модифицированного Flex Store показал основы создания CRUD-приложения на базе этих технологий. Очень было жалко, что ему не получилось развернуться ввиду недостатка времени.
Саша Гахов не пожелал публиковать свою презентацию, которая по его словам содержит не данные, а метаданные. Также он не публикует исходный код примеров. Я знаю, что он редко читает блоги и тем более комменты, но если мы его попросим, то он, может, одумается и напишет у себя в блоге большую статью, куда выложит и презентацию, и примеры.
Все хорошее кончается, и после заключительного слова Артемия Малкова, все разошлись кто куда. Некоторые пошли по своим делам, а некоторое количество самых стойких учаснегов пошли на афтерпати с пивом и прогулками.
Также мне вспоминается, что во вступительном слове я говорил о своих соображениях по поводу формата юзергруппы. Мысль была такая, что пора делать группу не Adobe driven, а управляемую ее участниками, то есть всеми теми, кто заинтересован в том, чтобы делиться информацией и получать ее. Потому что группа, пляшущая под отсутствующую дудочку Adobe не складывается. Также дудочка активистов, вроде Артемия или меня, - это не всегда то, что хотелось бы сообществу.
Соответственно, новый формат предполагает участие каждого. Вне зависимости от того, насколько профессионалом он себя чувствует (ибо у меня есть знакомые высококачественные профессионалы, занимающиеся самогноблением и ровняющиеся себя с лужей; также и начинающие профессионалы могут обладать как раз тем полезным опытом, который необходим другим начинающим, и о чем вряд ли (по своей глупости) даже подумают рассказывать умудренные гуру).
Мною был предложен такой формат, при котором, подобно UAFPUG, темы докладов, предлагаемые участниками сообщества, вывешиваются на всеобщее голосование и таким образом отбираются. Если исходить из расчета одна встреча каждый месяц, то каждый месяц из числа участников сообщества выбирается модератор, который следит за процессом голосования (ну как минимум удаляет спам из комментов и прочее), ведет подсчет голосов и осуществляет общую координацию (так чтобы это не требовала большого количества усилий, но все же требовало некоторой регулярности и внимания). Этот модератор отбирает итоговый список из трех докладов за две, скажем, недели до доклада плюс один запасной. Четыре выбранных участника готовят тезисы и презентации, а модератор следит за сроками (чтобы не получилось, что докладчик выступает совсем неподготовленным). Роль модератора заканчивается тогда, когда он выкладывает презентации прошедшей встречи и готовит отчет о ней.
Также, очевидно, нужно какое-то голосование по результатам докладов.
Так как такая группа будет полностью независимой, то нам будет необходима некоторая спонсорская помощь. Хотя бы в том, чтобы кто-то предоставил зал для встречи. И в этом еще одна активная роль участников сообщества - проявить активность и попробовать пробить зал в своей организации. Та организация, которая поможет с залом (и еще с чем-нибудь) получает публичнную славу и почет, а также имеет право предоставить вне конкурса один доклад на встрече от своего (или какого угодно другого) сотрудника. Непременное условие - доклад должен так или иначе касаться темы сообщества.
Ну и насчет темы. Это не обязательно должен быть Flex. Все, что связано с Flash-платформой, вполне может быть выставлено на голосование.
Что же касается Adobe, то они также могут участвовать в спонсорской помощи на общих основаниях. Если же Adobe хочет провести некоторую встречу в рамках сообщества, то она может быть внеочередной и устраивается полностью силами Adobe. Мы готовы предоставить им бренд RAFPUG на такие официальные встречи.
Такое аот у меня видение группы. Ну а теперь я хочу понять, нужно ли сообществу это или разработчиков вполне устраивает ситуация, когда можно придти на готовенькое, посидеть, послушать, а потом все это залажать в своем уютном бложике? Соответстенно, приветствуются комменты в обсуждение идеи (всех уровней: как идеи в целом, так и деталей реализации). Также в комментах могут отметиться те, кто готов участвовать более активно (установить CMS, изредка админить сайт). Ну и в сайдбаре блога я вывесил голосовалку. Не обойдите и ее.
Спасибо. До новых встреч в оффлайне и простите меня за задержку с отчетом!
ЗЫ. Думаю, что и докладчики, и организаторы рады услышать мнение о прошедшей встрече и докладах в комментах ![]()
А что же JavaFX?
Некоторые люди считают, что заявленный Sun JavaFX тихо умер и никуда не движется. Попробуем слегка развеять их заблуждения.
Во-первых, не надо забывать, что JavaFX Script, который чаще всего и ассоциируется с JavaFX не есть JavaFX. JavaFX - это платформа, в основе которой лежит JavaFX Script. Но что необходимо для того, чтобы JavaFX стал решением, пригодным для разработки RIA?
Собственно говоря, Sun и сейчас обладает мощной платформой для создания RIA в виде Java-платформы. Мы можем использовать как Java-апплеты, так и Java Web Start. Какие на данный момент имеются основные недостатки в этих способах поставки RIA клиенту и какие конкретные шаги осуществляет Sun по их устранению?
Посмотрим:
Большой размер JRE, который необходимо скачать и установить пользователю. Возможно, кто-то помнит проект Hamburg, цель которого заключалась в создании Consumer JRE, обладающей маленькими размерами при минимальной необходимой для загрузки нужных модулей функциональностью. То есть мы можем запустить апплет или приложение через Java Web Start пока остальная часть JRE грузится. На самом деле Consumer JRE кроме данной части, называемой Kernel, обладает также другими свойствами. Но об этом дальше.
Не очень удобный механизм определения нужной версии JRE на клиенте и ее загрузки. Действительно, если взять параллель с Flash-плеером, то такие решения, как Express Install и SWFObject существенно упрощают данную процедуру. Для веб-приложений на Java таких решений нет. Понятно, что говорить о RIA без решения этих двух вопросов - это то же самое, что говорить о третьем сроке без возглавления списка Единой России. И на днях Sun представило такое решение (пока еще не в релизе, а в виде early access, но уже можно пробовать) под названием Java SE 6 Update N. Например, Deployment Toolkit уже можно потестировать тут. Все это в стадии разработки, но прогресс уже заметен. Интересно, что Sun решили отказаться от практики включения подобных крупных фич в мажорные релизы. Consumer JRE будет доступна уже для Java SE 6.
Текущие графические темы Swing-контролов (Metal и Ocean) слишком убоги и не слишком кастомизируемы. Действительно, многие софтверные конторы делают весь свой успех на дизайне своей продукции. Flex 2 тут не исключение: тема по умолчанию выглядит вполне прилично и зачастую используется как есть, не вызывая особых нареканий пользователей. Стандартные темы Swing-контролов в Java вызывают некоторую долю неприязни. И в Sun это прекрасно понимают. Соответственно в таинственных лабораториях Sun вынашивалась и стала доступной в Java SE 6 Update N новая тема Nimbus. Здесь вы можете посмотреть скриншоты данной темы. А здесь прочитать про релиз от Jasper Potts, одного из разработчиков темы. Больше инфы можно найти в блоге Jasper Potts, блоге Ben Galbraith и блоге Romain Guy.
Данная тема полностью векторная (Java 2D), что означает, что она будет выглядеть одинаково хорошо при любых размерах и масштабировании. Также тема легко скинизуется и кастомизируется через таблицу UIDefaults. Соответственно при использовании этой темы в JavaFX-приложениях все подобные вопросы становятся решаемыми. Так-то вот.
Дальше я просто упомяну, что в Java SE 6 Update N доступна аппаратная акселерация отрисовки графики и вообще улучшена отрисовка графических элементов.
Следующий немаловажный элемент - это сам JavaFX Script. Крис Оливер, его создатель, продолжает с помощью комьюнити работу над ним. Работают соответствующие листы рассылки, о которых можно узнать на странице проекта. Также ведется работа над документацией в вики. Есть англоязычная вики, китайская (очень активно развивающаяся) и русскоязычная вялотекущая. На англоязычной вики идет обсуждение вариантов логотипа JavaFX, один из которых я поместил в этот пост.
На данный момент JavaFX Script работает в режиме интерпретатора. Но работа над компилятором JavaFX Script (а он планируется быть компилируемым) тоже уже ведется. Во всяком случае коммиты в svn поступают регулярно.
Немаловажным моментом является среда разработки. К сожалению, плагин для Eclipse замер в версии 0.0.2 и вряд ли будет развиваться дальше силами Sun. Но родная IDE от Sun - NetBeans - все совершенствует и совершентсвует данный плагин. Так, для вышедшей совсем недавно версии NetBeans IDE 6.0 Beta 1 вышла и новая версия плагина. Инструкции по установке также доступны.
Плюс к этому имеется опенсорсный проект сторонних разработчиков под названием JFXBuilder. Это первый графический редактор, который позволяет получать на выходе JavaFX Script. У проекта есть свой блог. Так что интересующиеся могут подписываться.
Вот такая картина в общем и целом. Конечно, ждать скорого релиза бессмысленно. Насколько я понимаю, это произойдет не раньше второй половины 2008-го года. Но уж если произойдет, то произойдет 
Немного о JavaFX
Просто немного новостей и полезных ссылок.
Алексей Гаврилов из питерской компании Metalink, известный своими тестами производительности разных RIA-технологий, опубликовал статью, показывающую как создать простое приложение с использованием Adobe AIR, Microsoft Silverlight и JavaFX. Фтыкаем.
Сергей Суриков опубликовал замечательный туториал, в котором подробно и пошагово описывается создание десктопного приложения на JavaFX с помощью NetBeans.
Также появилась русскоязычная wiki по JavaFX. Это в добавление к официальному русскоязычному mail-листу по JavaFX на openjfx.org.
Для начала (или продолжения?) хватит.
JavaFX: для тех, кто в Питере
Если кто-либо из живущих в Питере и окрестностях желает получить информацию о JavaFX практически из первых рук, ему, думаю, будет небезынтересной следующая информация:
Sun Microsystems приглашает разработчиков Java на встречу, посвященную технологии Java FX. Встреча состоится 11 июля в 19:00 в офисе Sun Microsystems (10 Красноармейская, 22а, б-ц Келлерман, 2 этаж).
Константин Будник, ведущий инженер компании Sun Microsystems и технолог сообщества разработчиков Open Java FX расскажет о новом языке программирования Java FX от Sun Microsystems; областях применения и перспективах развития технологии и создании сообщества разработчиков JFX в Санкт-Петербурге. Сотрудники Центра Высоких Технологий Sun Microsystems продемонстрируют возможности и особенности языка и ответят на вопросы.
Всем быть! ![]()
Java FX доступна!
Встречаем и качаем. Доступен плагин для Eclipse
В общем, надо щупать.
Имеется:
- FAQ
- The JavaFX Script Programming Language
- Туториалы
- Демо
- Рантайм, исходники и код демо
- JavaFX Script Plug-in для NetBeans 5.5, NetBeans 6.0 и Eclipse 3.2
Еще официальные ссылочки:
- Страница JavaFX на сайте Sun
- Страница JavaFX Script на сайте Sun
- Страница JavaFX Mobile на сайте Sun
- Feature Story от Sun
Еще информация по теме тут.
JavaFX: выход третьего игрока
Как я уже писал, Sun собирались сегодня анонсировать F3 на JavaOne. Действительно, две сессии, посвященных F3. Сюрпризом для меня стала информация о появлении официального названия для данной технологии: JavaFX. Вездесущий и всезнающий Райан Стюарт написал на эту тему еще немного.
Сразу скажу, что на Sun Tech Days F3 уже демонстрировался. Также демонстрировался плагин для NetBeans, вполне работоспособный. Там же, на Sun Tech Days было сообщено, что JavaFX решили не опенсорсить. Однако последняя информация (и, видимо, в связи с акциями Adobe и Microsoft) JavaFX все-таки будет опенсорсным.
Так что мы будем иметь кроссплатформенную технологию для построения RIA (больше напоминающую Apollo или, например, XBAP в WPF) с декларативным языком, основанным не на XML, а на нелюбимых продуктивными людьми curly braces. Технология построена на платформе Java. По словам Джеймса Гослинга, это более продвинутая замена AJAX. Но мы-то с вами уже в курсе, что таких замен целая куча. Сегодня, например, я читал интервью о RIA-платформе на базе FireFox 3. Тема становится популярной, появляется недетская конкуренция.
Итак, считаем часы до момента, когда можно будет скачать и пощупать JavaFX (который, кстати, обещали выпустить еще в феврале).
Ссылки по теме:
Flex goes open source!
Проснувшийся рано Дима Арышев опередил меня и прочитал это быстрее. А почитать стоит. Смысл в том, что Flex SDK становится не только бесплатным (как был), а еще и опенсорсным (под Mozilla Public License, MPL). То есть это mxmlc, compc, asc, дебагер, фрэймворк, компоненты. То есть все.
Это же просто революционный шаг! И я понимаю гордость Теда Патрика.
Если я все осознаю правильно, то в скором времени нас могут ждать версии MXML-компилятора с различными встроенными препроцессорами для генерации различного кода. И если, например, Flex Builder будет позволять подцеплять эти компиляторы (ну а что нам мешает как минимум указать модифицированную версию SDK для Flex Builder’а)!? Эх, мечты, мечты.
Интересно, что ответят парни из Microsoft? Кстати, F3 опенсорсить не будут. По крайней мере о таком решении Sun сообщили на Sun Tech Days. Но сам F3 SDK и плагин для NetBeans, вроде как, станет доступен 8 мая перед JavaOne.
Пока все ![]()
PS. Нет, не все. Если вы заметили, то Тед пишет про дату выхода Flex 3: декабрь 2007.
Правила хорошего тона
Буквально на прошлой неделе на Sun Tech Days кто-то из докладчиков говорил о том, что не будет же здравомыслящий человек называть переменную enum. И вот сегодня я вижу такую переменную в проекте. Понятно, что для Java 1.5 это компилироваться не будет.
Странные люди…
FDS 2.5 aka Adobe LiveCycle Data Services 2.5
Некоторые стали впадать в истерию и называть Adobe империей зла. Не все Adobe делают хорошо, не все делают из того, что хотели бы видеть разработчики. Но количество новых релизов в Adobe Labs так или иначе поражает. Вслед за выходом Flex Module for Apache and IIS, который призван осуществлять компиляцию Flex приложений на Apache HTTP server и IIS (многие разработчики считают, что это сильно облегчит им процесс разработки), мы увидели выход Apollo. Теперь же у нас ребрендинг Flex Data Services в новой версии 2.5 под названием Adobe LiveCycle Data Services 2.5.
Новый продукт позиционируется как серверное решение для создания RIA. И, соответственно, не ограничивается лишь Flex, а предназначено и для AJAX-разработчиков. Название LiveCycle не случайно, а говорит о более тесной интеграции с соответствующим сервером (хотя тут, возможно, и просто использование названия в маркетинговых целях).
Помимо улучшений и изменений, новый продукт уже готов к работе с Apollo: локальное кэширование данных и offline messaging.
Ну и, если что, это пока бета. Поживем - увидим.