LINUX.ORG.RU

JavaFX 2.0

 , , , , , ,


0

3

После разработки, длившейся больше года, вышла вторая версия платформы для создания интернет-приложений JavaFX. Эта технология имеет давнишнюю историю: будучи созданной в 2007 году под названием «F3», успела претерпеть несколько релизов, а также поменять название и хозяев. Сегодняшний JavaFX - достойный ответ Oracle таким технологиям как Adobe AIR и Microsoft Silverlight. Это подразумевает быструю и эффективную 2D- и 3D-графику, использующую аппаратное ускорение; векторную анимацию, построенную на принципах keyframe и tweening; эргономичный набор виджетов; запуск как в браузере, так и через Java Web Start; возможность инсталляции в качестве desktop-приложения; возможность использовать современные мощные языки программирования.

Ключевым моментом версии 2.0 является то, что вся функциональность JavaFX доступна теперь в виде обычных Java API. Если раньше единственным языком для JavaFX являлся FXScript, то теперь платформа JavaFX открыта для всего спектра JVM-языков: Java, Scala, Groovy, JRuby, Jython, Clojure, Mirah, Fantom и другие; почетное место в списке занимает Visage - достойный наследник FXScript. Авторы JavaFX надеются, что этим списком будут удовлетворены сторонники даже самых экзотических тенденций в программировании. Остальные важные моменты релиза 2.0 вкратце перечислены ниже; подробнее ознакомиться с ними можно по ссылке.

  • FXML - новый гибкий формат декларативного описания интерфейсов и векторной графики, поддерживающий встраивание сценариев на вышеперечисленных языках. Этот основывающийся на XML формат призван заменить JSON-подобный FXD;
  • Prism - новая графическая подсистема для современных GPU, дающая многократный прирост производительности графики;
  • Новая, базирующаяся на GStreamer, медиа-подсистема. Поддерживаются VP6, MP3, эквализация и воспроизведение с малой задержкой (low latency);
  • Более 50 готовых компонентов для создания пользовательских интерфейсов, включая различные элементы форм, layout-менеджеры, графики и диаграммы. Поддерживается CSS3 для задания стилей;
  • Встроенный веб-компонент, базирующийся на WebKit и поддерживающий HTML и JavaScript, а также манипуляцию DOM-моделью;
  • Переработанный Java plugin, поддерживающий Prism и реализующий предзагрузку (preloading);
  • Новая архитектура и реализация объектных свойств;
  • Переработанная и оптимизированная подсистема анимации.

О выходе JavaFX 2.0 было объявлено вчера на конференции JavaOne'2011 в Сан-Франциско. Разработчики пообещали в скором времени открыть исходные тексты всей платформы JavaFX в рамках проекта OpenJDK. Помимо этого, были озвучены небезынтересные идеи касательно будущей Java 9, такие как реификация, оптимизация хвостовых вызовов, продолжения (continuations) и метаобъектный протокол (MOP).

В данный момент доступна стабильная версия под Windows, Developer Preview под Mac OS и альфа версия под Linux. Стабильная Linux версия ожидается в 2012.

>>> Подробности

★★

Проверено: maxcom ()
Последнее исправление: maxcom (всего исправлений: 3)

Ответ на: комментарий от anonymous

А куда девать мегабиты?Все ради прогресса.

Гигабиты, гигабайты и гигагерцы. Действительно, их нынче много... А после этого придумаем какую-нибудь энергосберегающую технологию ещё.

Casus ★★★★★
()
Ответ на: комментарий от baverman

>Бред в исполнении анона, перефразирую:

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

Я тоже перефразирую: В связи с % соотношением пользователей линукс сборщиков линукс версии такое же процентное соотношение от сборщиков под венду. Т.е. 20 человек занимаются сборкой под венду если, то под линукс собирает один уборщик на пол ставки

Loki13 ★★★★★
()
Ответ на: комментарий от Kuka

Если говорить сухим техническим языком, то бенефиты XML перед JSON таковы:

Афигеть сколько базз-вордов. «валидация: DTD и XSD» — единственный сомнительный плюс, на самом деле. Я не врубаюсь зачем нужен XSLT для описания интерфейса. Хотел бы послушать и про остальные клёвые базз-ворды (XSL-FO, XML Security, XML Namespaces) — как они применимы для описания интерфейса, я чувствую себя очень глупым, не понимая таких элементарных вещей.

Casus ★★★★★
()
Ответ на: комментарий от Kuka

Чего?

графический стек Prism использует DirectX

Эта...в javafx всего одна библиотека для аппаратного ускорения это JOGL...в javafx никогда небыло и нет никаких интерфейсов для directx...не говоря уже о стандартах java.
И сложность алгоритмов рендеринга графики в javafx ты смотрел вообще?Чтоб делать поддержку еще и directx-это очень много работы,мы поддержку opengl ждали со времен javafx 1.3(это больше года)...какой директикс

Так что речь идет о кардинально отличающейся имплементации графического стека.

Небольшие различия в бинарных библиотеках JOGL,в коде обращению к OpenGl(из java) различий нет.

anonymous
()
Ответ на: комментарий от Casus

>афигеть сколько базз-вордов

остальные клёвые базз-ворды


Базз-ворды, базз-ворды, базз-ворды. Спокойно, товарищ модератор, это пройдёт.

Deleted
()
Ответ на: комментарий от Loki13

Вы с аноном в крестиках и трусах. Так есть проблемы со сборкой из-за проблем с кроссплатформенностью (а следовательно костылями) или нет?

baverman ★★★
()
Ответ на: комментарий от Karapuz

> Дался вам нативный гуй.

Так много проще показать товар лицом.

dave ★★★★★
()
Ответ на: комментарий от baverman

Всё проще — там один 286 комп собирает. На линукс просто ресурсов не остаётся.

Deleted
()
Ответ на: комментарий от anonymous

>Чтоб делать поддержку еще и directx-это очень много работы,мы поддержку opengl ждали со времен javafx 1.3(это больше года)...какой директикс

чи я слепой чи шо? «All new fully hardware accelerated pipeline, project name „Prism“. It will target DirectX on Windows platforms (both 32 and 64 bit) and OpenGL on other systems»

Karapuz ★★★★★
()

>>Разработчики пообещали в скором времени открыть исходные тексты всей платформы JavaFX в рамках проекта OpenJDK.

Сомневаюсь, при Sun это было возможно, но не сейчас...

Pidgin ★★
()
Ответ на: комментарий от baverman

Ты видишь разницу между сборкой силами 20 человек и одним на пол ставки? Он может банально не успеть сделать. Особенности все равно же есть. Как минимум протестировать надо, а если еще и под разные дистры(хотя бы убунту, сусю, шляпу и каждой по 2 версии), и если под 2.5 версии венды 20 человек тестят, то под 6 версий разных дистров один человек.

//Все на правах фантазий и догадок. Хотя думаю примерно так и есть.

Loki13 ★★★★★
()
Ответ на: комментарий от Loki13

про 2.5 версии венды соврал, как минимум 8 версий

Loki13 ★★★★★
()
Ответ на: комментарий от Casus

>> Ничего там попиксельно на Java не обрабатывается.

Попробуй написать свой виджет.

Для своего виджета отрисовка также будет производиться через выскоуровневый Java2D, никакой обработки пикселей на Java не будет, если специально такого не написать.

kamre ★★★
()
Ответ на: комментарий от anonymous

> в javafx никогда небыло и нет никаких интерфейсов для directx

Никто и не собирался давать доступ к direct3d из Java/JavaFX, но сам рендеринг в Java2D/JavaFX использует direct3d под windows для ускорения отрисовки. А под Mac/Linux использует openGL, но опять же не дает доступа к нему, это просто деталь реализации Java2D/JavaFX.

kamre ★★★
()
Ответ на: комментарий от Karapuz

да,прочитал...дожили называется.

anonymous
()
Ответ на: комментарий от kamre

>>Никто и не собирался давать доступ к direct3d из
Тут уж ты не прав.Я не обратил внимания на статью про Prism,поэтому написал что dx там нет.
А если есть dx то получить доступ к нему-не составит проблем,ибо javafx позволяет писать также класы на java (помимо javafx скриптов),а классам на java доступны все публичные классы и методы из техноогии javafx,а такими являются и OpenGl библиотека,и DX.

anonymous
()
Ответ на: комментарий от Casus

> Я не врубаюсь зачем нужен XSLT для описания интерфейса.

Мною был приведен _общий_, безотносительно гуепостроения, список преимуществ XML перед JSON. Будьте внимательнее.

как они применимы для описания интерфейса


Речь идет не о формате per se. Вы рассматриваете его только лишь как потенциальный пользователь; вам, может, доставляет дискомфорт некоторая многословность XML по сравнению с JSON (хотя, уверяю вас, вряд ли вам хоть раз в жизни придется писать FXML руками - бОльшую часть работы за вас сделают инструменты).

Я же заглядываю несколько глубже. Осознаю, что формат этот не существует сам по себе. Его надо разбирать, анализировать, обрабатывать, генерировать. Причем как на стороне runtime, так и на стадии дизайна, например, в IDE. И мне почти все вышеперечисленные «бенефиты» кажутся очевидными. Судите сами:

Namespaces: расширение семантики за счет сторонних XML-форматов. Пример: внедрение SVG-графики в FXML;
XPath: навигация по дереву FXML и выборка элементов/атрибутов по критерию. По сути - навигация по scene graph;
XSLT: генерация исходного кода по FXML, для последующей предкомпиляции в байт-код и значительного ускорения загрузки приложения.

Афигеть сколько базз-вордов.


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

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

Kuka ★★
() автор топика

вопросы по теме: 1) оно опенсорсное? 2) оно будет работать на не-x86? 3) этот плагин что они предлагают - оно не базируется на существующих плагинах java для браузеров (у которых куча проблем) либо будет гарантированно работать на всех ОС?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от anonymous

> а классам на java доступны все публичные классы и методы из техноогии javafx

И что, классы для реализации отрисовки через direct3d/openGL будут прям так торчать в публичном интерфейсе?

kamre ★★★
()

Теперь у JavaFX есть шанс сразится с Silverlight. А предыдущие версии на уровне Flash плавали, не выше. Поддержка популярных ЯП, декларативный интерфейс на XML - что-то мне это напоминает... Что-то из Редмонда... Молодцы, что развивают продукт. Что-что, а GUI на нём ваять будет неплохо.

lucentcode ★★★★★
()
Ответ на: комментарий от anonymous

> Эта...в javafx всего одна библиотека для аппаратного ускорения это JOGL...в javafx никогда небыло и нет никаких интерфейсов для directx...не говоря уже о стандартах java.

В Prism есть. Специально для Ъ:

Graphics System

  • DirectX 9 on Windows XP and Windows Vista
  • DirectX 11 on Windows 7
  • OpenGL on Mac, Linux, Embedded
  • Java2D when hardware acceleration is not possible

http://download.oracle.com/javafx/2.0/architecture/jfxpub-architecture.htm

Kuka ★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

> 1) оно опенсорсное?

Код обещают открыть полностью в рамках проекта OpenJDK.

2) оно будет работать на не-x86?


Есть инициативы JavaFX TV и JavaFX Mobile, так что, скорее всего, будет.

3) этот плагин что они предлагают - оно не базируется на существующих плагинах java для браузеров (у которых куча проблем)


Именно из-за «кучи проблем» браузерный Java Plugin был практически переписан с нуля и теперь будет значительно быстрее загружаться, а также поддерживать стек Prism.

Kuka ★★
() автор топика
Ответ на: комментарий от Kuka

> браузерный Java Plugin был практически переписан с нуля

на браузерный джава плагин куча нареканий у криворуких писателей из мозиллы и угрозы выпилить жабу из фаерфокса нав-сег-да

Karapuz ★★★★★
()
Ответ на: комментарий от kamre

Да.В 1.3 так и было,в 2.0 так и осталось.Подругому быть неможет.

anonymous
()
Ответ на: комментарий от Karapuz

> на браузерный джава плагин куча нареканий у криворуких писателей из мозиллы и угрозы выпилить жабу из фаерфокса нав-сег-да

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

В конце концов, Netscape Plugin API - это не только Mozilla.

Kuka ★★
() автор топика
Ответ на: комментарий от Casus

Да, чуть не забыл самое главное преимущество FXML. В FXD мы были ограничены определенным набором элементов (по сути, захардкоженное отражение подмножества JavaFX API). То есть загрузить какой-нибудь штатный «Button { ... }» мы могли, а вот «MyCoolButton { ... }» - уже нет.

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

Kuka ★★
() автор топика
Ответ на: комментарий от Kuka

Kuka, ответь пожалуйста, вот есть ARM с встроенным х264 ускорением, реально ли скоро будет запустить на нем JavaFX приложение, тем более,что там есть java инструкции.

UnnamedUA
()
Ответ на: комментарий от Kuka

>практическая разработка ПО зачастую требует чуть более широкого, чем академический, кругозора.

у тебя превратные понятия об академическом кругозоре.

general_ochevidnost
()
Ответ на: комментарий от Kuka

а как самостоятельное приложение без интернета стало быть оно тоже будет работать, в отличие от 1.3? уже можно говорить о полноценном аналоге wpf?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

> а как самостоятельное приложение без интернета стало быть оно тоже будет работать, в отличие от 1.3?

В 1.3 оно тоже работало, благодаря Java WebStart. Сейчас, как подчеркивают разработчики, есть три модели развертывания и запуска: браузерный апплет, WebStart-приложение, standalone приложение (запуск двойным щелчком по JAR).

уже можно говорить о полноценном аналоге wpf?


К сожалению (или к счастью?) не знаком с WPF, посему ответить не могу.

Kuka ★★
() автор топика
Ответ на: комментарий от Kuka

Но, поймите, практическая разработка ПО зачастую требует чуть более широкого, чем академический, кругозора.

По-моему, с точностью до наоборот: это у тебя академические представления о программировании. Ты, случайно, не учитель информатики? Или на курсах каких преподаёшь?

Casus ★★★★★
()
Ответ на: комментарий от anonymous

> не лисп френдли -> не нужно.

Скажите, вы внимательно читали текст новости? Слово «Clojure» там видели? В таком случае, вы либо тролль, либо типичный для ЛОРа неолиспер, который на поверку ни черта не смыслит в лиспе (и, в частности, в таксономии его диалектов).

Впрочем, эти две категории сильно пересекаются.

Kuka ★★
() автор топика
Ответ на: комментарий от Kuka

Да, чуть не забыл самое главное преимущество FXML. В FXD мы были ограничены определенным набором элементов (по сути, захардкоженное отражение подмножества JavaFX API). То есть загрузить какой-нибудь штатный «Button { ... }» мы могли, а вот «MyCoolButton { ... }» - уже нет.

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

Casus ★★★★★
()
Ответ на: комментарий от UnnamedUA

> но не для коммерческого применения.. :(

Откуда дровишки, позвольте поинтересоваться?

Kuka ★★
() автор топика
Ответ на: комментарий от Kuka

У меня такой вопрос - а для Live-трансляций в вебе заменить флеш с его RTMP оно осилит? Или для этого жабафх тоже не предназначена?

Ramen ★★★★
()
Ответ на: комментарий от Casus

> По-моему, с точностью до наоборот: это у тебя академические представления о программировании.

Однако! Необходимость знакомства с широким спектром практических технологий и умение объективно оценивать их достоинства, недостатки и область применимости - это «академические представления о программировании»?

Ты, случайно, не учитель информатики? Или на курсах каких преподаёшь?


Я преподаю в университетах и учебных центрах.

Kuka ★★
() автор топика
Ответ на: комментарий от Ramen

> У меня такой вопрос - а для Live-трансляций в вебе заменить флеш с его RTMP оно осилит?

Протокол RTSP поддерживается с версии 1.2 (июнь 2009 года). Посмотрите пример.

Kuka ★★
() автор топика
Ответ на: комментарий от Kuka

Меня гораздо больше интересует p2p-вещание - то, что во флеше реализовано совсем плохо и через задницу.

Ramen ★★★★
()
Ответ на: комментарий от Ramen

> Меня гораздо больше интересует p2p-вещание - то, что во флеше реализовано совсем плохо и через задницу.

Я знаю только один работающий пример P2P-вещания - проприетарный Sopcast. Полагаю, создать подобную сеть на JavaFX не составит труда, учитывая множество готовых P2P- и около-P2P-технологий: JXTA, Jini, JGroups, JavaSpaces. Был бы интерес.

Kuka ★★
() автор топика
Ответ на: комментарий от Kuka

Я преподаю в университетах и учебных центрах.

Ага, я примерно так и подумал. Стиль такой: знать много обо всём, но очень поверхностно.

Необходимость знакомства с широким спектром практических технологий и умение объективно оценивать их достоинства, недостатки и область применимости - это «академические представления о программировании»?

Я выразился, конечно, несколько резковато. Я имел в виду «академическое представление о программировании» как противоположность практическому применению, когда теоретическое превосходство XML в наличии технологии XSLT преподносится как преимущество при выборе формата описания интерфейса, когда эта технология в данном вопросе вообще никаким боком.

Casus ★★★★★
()
Ответ на: комментарий от Casus

> Ага, я примерно так и подумал. Стиль такой: знать много обо всём, но очень поверхностно.

Скажите, вы обо всех преподавателях такого мнения? Вы ведь даже не спросили, какие предметы я читаю.

теоретическое превосходство XML в наличии технологии XSLT преподносится как преимущество при выборе формата описания интерфейса, когда эта технология в данном вопросе вообще никаким боком.


Ну, батенька, я же только что показал, что XSLT в данном случае чрезвычайно полезен, в качестве декларативного инструмента для генерации FXML из чего угодно (например, из упрощенного XML-описания какой-то специфичной задачи). И, наоборот, генерации чего угодно из FXML (например, исходных текстов для последующей компиляции). Для вас эти возможности - чисто теоретические, потому что с XSLT вы знакомы, полагаю, только в теории. Для меня - исключительно практические, потому что я имел дело с XML-трансформациями на практике. Только и всего.

Kuka ★★
() автор топика
Ответ на: комментарий от Kuka

>Я знаю только один работающий пример P2P-вещания - проприетарный Sopcast
Да, сопкаст работает, но не лишён существенных проблем. Ещё есть проприетарный Octoshape, который тоже работает, но тоже не лишён существенных проблем.
И ещё адоб, собственно, не так давно сделал поддержку p2p-вещания. С блекджеком и своим проприетарным протоколом RTMFP. И то ли сам этот протокол ущербен, то ли его реализация в флешплеере, но работает на практике оно очень плохо.

Полагаю, создать подобную сеть на JavaFX не составит труда, учитывая множество готовых P2P- и около-P2P-технологий: JXTA, Jini, JGroups, JavaSpaces. Был бы интерес.

Как бы технологии эти афаик не новые, было много попыток создать ПО для p2p-вещания на жабе, но все они закончились фейлом.

Ramen ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.