С выпуском JDK 11 в 2018 году Oracle сделала JavaFX частью OpenJDK в рамках проекта OpenJFX [3] с целью ускорения темпов его разработки. [4]
JavaFXPorts с открытым исходным кодом работает на iOS (iPhone и iPad) и Android. [5] Соответствующее коммерческое программное обеспечение, созданное под названием «Gluon», поддерживает те же мобильные платформы с дополнительными функциями, а также настольные компьютеры. [6] Это позволяет использовать единую базу исходного кода для создания приложений для настольных компьютеров, iOS и устройств Android.
Функции
Parts of this article (those related to Features) need to be updated. Please help update this article to reflect recent events or newly available information.(July 2023)
JavaFX 1.1 был основан на концепции «общего профиля», который должен охватывать все устройства, поддерживаемые JavaFX. Этот подход позволяет разработчикам использовать общую модель программирования при создании приложения, ориентированного как на настольные, так и на мобильные устройства, и совместно использовать большую часть кода, графических ресурсов и контента между настольными и мобильными версиями. Для удовлетворения потребности в настройке приложений на определенном классе устройств платформа JavaFX 1.1 включает API, которые являются специфичными для настольных или мобильных устройств. Например, профиль JavaFX Desktop включает Swing и расширенные визуальные эффекты.
Для конечного пользователя функция «Drag-to-Install» позволяет перетаскивать виджет JavaFX — приложение, размещенное на веб-сайте, — и помещать его на рабочий стол. Приложение не потеряет свое состояние или контекст даже после закрытия браузера. Приложение также можно перезапустить, щелкнув по ярлыку, который автоматически создается на рабочем столе пользователя. Такое поведение включено «из коробки» механизмом Java-апплетов с момента обновления Java 6u10 и используется JavaFX из базового уровня Java. Sun рекламирует «Drag-to-Install» как открытие новой модели распространения и возможность разработчикам «оторваться от браузера».
JavaFX 1.x включал набор подключаемых модулей для Adobe Photoshop и Illustrator, которые позволяют интегрировать расширенную графику непосредственно в приложения JavaFX. Подключаемые модули генерируют код JavaFX Script, который сохраняет слои и структуру графики. Затем разработчики могут добавлять анимацию или эффекты к импортированной статической графике. Также имеется инструмент конвертации графики SVG (также известный как Media Factory), который позволяет импортировать графику и просматривать активы после преобразования в формат JavaFX. [7]
До версии JavaFX 2.0 разработчики использовали статически типизированный декларативный язык JavaFX Script для создания приложений JavaFX. Поскольку JavaFX Script компилировался в байт-код Java , программисты могли использовать вместо него код Java . Приложения JavaFX до версии 2.0 могли работать на любом рабочем столе, на котором могла работать Java SE , как и в текущих версиях. [8]
JavaFX 2.0 и более поздние версии реализованы как библиотека Java, а приложения, использующие JavaFX, написаны в обычном коде Java. Язык сценариев был отменен Oracle, однако его разработка продолжалась несколько лет в проекте Visage, окончательно завершившись в 2013 году. [9] [10]
Sun Microsystems лицензировала пользовательский шрифт Amble для использования на устройствах JavaFX. Семейство шрифтов было разработано специалистом по дизайну мобильных пользовательских интерфейсов Punchcut и доступно как часть JavaFX SDK 1.3 Release.
Веб-просмотр
WebView , встроенный компонент веб-браузера , использует движок браузера WebKit . Он поддерживает обычные функции HTML5, такие как холст, медиа, счетчик, прогресс, подробности и сводные теги, а также MathML, SVG, JavaScript и CSS. Поддержка WebAssembly не включена.
JavaFX Мобильный
Parts of this article (those related to JavaFX Mobile) need to be updated. The reason given is: Many things have changed since then. Please help update this article to reflect recent events or newly available information.(June 2023)
JavaFX Mobile — это реализация платформы JavaFX для многофункциональных веб-приложений, ориентированных на мобильные устройства . Приложения JavaFX Mobile 1.x могут разрабатываться на том же языке JavaFX Script , что и приложения JavaFX 1.x для браузера или настольного компьютера, и с использованием тех же инструментов: JavaFX SDK и JavaFX Production Suite. Эта концепция позволяет совместно использовать кодовую базу и графические ресурсы для настольных и мобильных приложений. Благодаря интеграции с Java ME приложения JavaFX получают доступ к возможностям базового мобильного устройства, таким как файловая система , камера, GPS , Bluetooth или акселерометр .
JavaFX Mobile стал общедоступным как часть релиза JavaFX 1.1, анонсированного Sun Microsystems 12 февраля 2009 года.
Sun планировала включить встроенную поддержку JavaFX на устройствах, работая с производителями телефонов и операторами мобильной связи для предварительной загрузки среды выполнения JavaFX Mobile на телефоны. JavaFX Mobile, работающая на Android, была продемонстрирована на JavaOne 2008, а избранные партнерства (включая LG Electronics , Sony Ericsson ) были анонсированы на запуске JavaFX Mobile в феврале 2009 года.
Компоненты
Платформа JavaFX включает в себя следующие компоненты:
JavaFX SDK : включает в себя, помимо прочего, графику, медиа-сервисы, библиотеки форматированного текста и веб-представление.
NetBeans IDE для JavaFX: NetBeans с палитрой drag-and-drop для добавления объектов с преобразованиями, эффектами и анимацией, а также набором примеров и передовых методов. Для пользователей Eclipse есть поддерживаемый сообществом плагин, размещенный на e(fx)clipse.
JavaFX Scene Builder: был представлен в JavaFX 2.1 и более поздних версиях. Пользовательский интерфейс (UI) создается путем перетаскивания элементов управления из палитры. Макет сохраняется как файл FXML, который является специальным форматом XML.
История
Релизы после обновления версии
JavaFX теперь является частью JRE/JDK для Java 8 (выпущен 18 марта 2014 года) и имеет ту же нумерацию, т. е. JavaFX 8. [11]
JavaFX 8 добавляет несколько новых функций, в том числе: [12]
Поддержка 3D-графики [13] [14]
Поддержка сенсора
Поддержка MathML с JavaFX 8 Update 192
Поддержка печати и форматированного текста
Шаблоны общих диалогов для замены JOptionPane (начиная с JavaFX 8u40) [15]
Функции JavaFX 9 были сосредоточены на извлечении некоторых полезных закрытых API из кода JavaFX, чтобы сделать эти API общедоступными:
JEP 253: Подготовка элементов управления пользовательского интерфейса JavaFX и API CSS для модуляризации [16]
Oracle объявила о своем намерении прекратить включать JavaFX в свою сборку JDK 11 и более поздние версии. [17] Он больше не входит в комплект последней версии.
JavaFX 11 впервые был выпущен в сентябре 2018 года.
JavaFX 11.0.2 — последняя публичная версия JavaFX 11. [18]
JavaFX 11.0.16 — это последняя версия JavaFX 11 для тех, у кого есть долгосрочный контракт на поддержку. [19]
Поддержка MathML
API FX-робота
JavaFX 12 впервые был выпущен в марте 2019 года.
JavaFX 12.0.1. [18]
Поддержка кнопок мыши «вперед/назад»
Новые защищенные методы VirtualFlow для подклассификации [20]
JavaFX 13 выпущена в сентябре 2019 года.
Поддержка дисплеев на основе электронной бумаги
Поддержка собственного рендеринга медиа через WritableImages, поддерживаемые NIO ByteBuffers [21]
JavaFX 14 был выпущен в марте 2020 года.
Свойство размера табуляции для Text и TextFlow
Поддержка HTTP/2 в WebView [22]
JavaFX 15 был выпущен в сентябре 2020 года.
Поддержка дисплеев на основе электронной бумаги на устройствах i.MX6 [23]
JavaFX 16 был выпущен в марте 2021 года.
JavaFX 17 был выпущен в сентябре 2021 года. Основные моменты:
Тип 3D SpotLight
Загружайте изображения и таблицы стилей из встроенных URI-данных
Печать в файлы
Запрос состояний клавиш CAPS LOCK и NUM LOCK
Поддержка нескольких экранов в наборе инструментов Windows для встраиваемых платформ
JavaFX 18 был выпущен в марте 2022 года. Основные моменты:
Основные релизы, начиная с JavaFX 1.1, имеют название релиза, основанное на названии улицы или района в Сан-Франциско . Релизы обновлений обычно не имеют названия релиза. [26]
4 декабря 2008 года компания Sun выпустила JavaFX 1.0.2.
JavaFX для разработки мобильных приложений наконец-то стал доступен в составе релиза JavaFX 1.1 (под названием Franca [26] ), официально анонсированного 12 февраля 2009 года.
JavaFX 1.2 (названный Marina [26] ) был выпущен на JavaOne 2 июня 2009 года. В этом выпуске было представлено: [27]
Windows Mobile Runtime с беспроводным клиентом Sun Java
JavaFX 1.3 (названный Soma [26] ) был выпущен 22 апреля 2010 года. В этом выпуске было представлено: [28]
Улучшения производительности
Поддержка дополнительных платформ
Улучшенная поддержка элементов управления пользовательского интерфейса
JavaFX 1.3.1 был выпущен 21 августа 2010 года. В этом выпуске было представлено:
Быстрое время запуска приложения JavaFX
Пользовательский индикатор выполнения для запуска приложения
JavaFX 2.0 (под названием Presidio [26] ) был выпущен 10 октября 2011 года. В этом выпуске было представлено:
Новый набор API Java, открывающий возможности JavaFX всем разработчикам Java, без необходимости изучать новый язык сценариев. Поддержка JavaFX Script прекращена навсегда.
Поддержка высокопроизводительного ленивого связывания, выражений связывания, выражений связанных последовательностей и частичной повторной оценки связывания.
Oracle объявляет о намерении открыть исходный код JavaFX.
Среда выполнения JavaFX становится платформенно-зависимой, используя системные возможности, такие как видеокодек, доступный в системе; вместо реализации только одной кроссплатформенной среды выполнения, как в JavaFX 1.x.
Различные улучшения были сделаны в библиотеках JavaFX для многопоточности. API задач были обновлены для поддержки гораздо более кратких возможностей потоковой обработки (т. е. класс JavaTaskBase больше не нужен, поскольку все API находятся на Java, и требование иметь интерфейс обратного вызова и класс реализации Java больше не нужны). Кроме того, граф сцены был разработан для того, чтобы позволить создавать сцены в фоновых потоках, а затем присоединять их к «живым» сценам потокобезопасным способом .
26 мая 2011 года Oracle выпустила JavaFX 2.0 Beta. Бета-версия была доступна только для 32- и 64-разрядных версий Microsoft Windows XP, Windows Vista и Windows 7. В то время также была доступна версия Early Access для Mac OS X для участников JavaFX Partner Program, в то время как поддержка Linux была запланирована для будущего выпуска JavaFX. JavaFX 2.0 был выпущен только с поддержкой Windows. Поддержка Mac OS X была добавлена с JavaFX 2.1. Поддержка Linux была добавлена с JavaFX 2.2.
JavaFX 2.0 использует новый декларативный язык XML, называемый FXML . [29] [30]
27 апреля 2012 года Oracle выпустила версию 2.1 JavaFX, [31] которая включает в себя следующие основные функции: [32]
Первая официальная версия для OS X (только для настольных компьютеров)
Улучшения пользовательского интерфейса, включая элементы управления в виде комбинированных списков, диаграммы (с накоплением) и строки меню.
Компонент Webview теперь позволяет JavaScript вызывать методы Java
14 августа 2012 года Oracle выпустила версию 2.2 JavaFX, [33] которая включает в себя следующие основные функции: [34]
Поддержка Linux (включая плагин и веб-старт)
Холст
Новые элементы управления: выбор цвета, разбиение на страницы
Поддержка HTTP-трансляций в реальном времени
Сенсорные события и жесты
API для обработки изображений
Нативная упаковка
JavaFX 2.2 добавляет новую опцию упаковки под названием Native Packaging, позволяющую упаковывать приложение как «нативный пакет». Это дает пользователям возможность устанавливать и запускать приложение без каких-либо внешних зависимостей от системной JRE или FX SDK.
Начиная с Oracle Java SE 7 update 6 и JavaFX 2.2, JavaFX поставляется в комплекте для установки с платформой Oracle Java SE. [11]
Будущая работа
В ноябре 2012 года Oracle также объявила об открытом исходном коде Decora, языка шейдеров DSL для JavaFX, позволяющего генерировать шейдеры для OpenGL и Direct3D . [35]
Oracle написала в своей Дорожной карте поддержки клиентов, что новые исправления JavaFX будут продолжать поддерживаться на Java SE 8 до марта 2025 года. [36] Ранее Oracle объявила, что они «работают с заинтересованными третьими сторонами, чтобы упростить сборку и поддержку JavaFX как отдельно распространяемого модуля с открытым исходным кодом». JavaFX будет продолжать поддерживаться в будущем компанией Gluon как загружаемый модуль в дополнение к JDK. [37]
Доступность
По состоянию на март 2014 года JavaFX развернут на Microsoft Windows , OS X и Linux . [38] У Oracle есть внутренний порт JavaFX на iOS и Android . [39] [40] Поддержка ARM доступна, начиная с JavaFX 8. [41] 11 февраля 2013 года Ричард Бэр, главный архитектор клиентской платформы Java в Oracle, объявил, что Oracle откроет исходный код реализаций iOS и Android своей платформы JavaFX в течение следующих двух месяцев. [42] [43]
Начиная с версии 8u33 JDK для ARM поддержка JavaFX Embedded была удалена. [44]
Поддержка будет продолжена для архитектур на базе x86. [45]
Создан коммерческий порт JavaFX для Android и iOS под названием «Gluon». [6]
Лицензия
Существуют различные лицензии для предыдущих модулей, которые использовались для создания среды выполнения JavaFX:
Компилятор JavaFX [46] и более старая версия 2D Scene graph [47] выпущены под лицензией GPL v2 ,
Во время разработки Sun объяснила, что они развернут свою стратегию для модели лицензирования JavaFX для первого выпуска JavaFX. [49] После выпуска в 2008 году Джит Каул, вице-президент Sun по клиентскому программному обеспечению, объяснил, что они скоро опубликуют спецификацию для JavaFX и связанных с ней форматов файлов , а также продолжат открывать исходный код среды выполнения JavaFX и отделят это ядро от проприетарных частей, лицензируемых внешними сторонами. [50]
^ Смит, Дональд (7 марта 2018 г.). «Будущее JavaFX и другие обновления дорожной карты клиента Java». Архивировано из оригинала 17 ноября 2018 г. Получено 14 июня 2019 г.
^ "Архив Google Code - Долгосрочное хранилище для хостинга проектов Google Code". Code.google.com . Архивировано из оригинала 2016-04-01 . Получено 2016-08-01 .
^ Джайлс, Джонатан (14.01.2015). "JEP 253: Подготовка элементов управления пользовательского интерфейса JavaFX и API CSS для модуляризации". Oracle Corporation . Архивировано из оригинала 10.03.2016 . Получено 17.01.2016 .
^ "Gluon and JavaFX". Архивировано из оригинала 29-04-2019 . Получено 29-10-2018 .
^ ab "javafxports/openjdk-jfx". GitHub . Архивировано из оригинала 2020-08-03 . Получено 2020-07-20 .
^ JavaFX 20 и далее, архивировано из оригинала 2023-06-20 , извлечено 2023-06-20
^ "F3 (Блог Криса Оливера)". 2012-01-06. Архивировано из оригинала 2012-01-06 . Получено 2016-08-20 .{{cite web}}: CS1 maint: bot: original URL status unknown (link)
^ abcde "Репозитории и релизы". 2013-06-29. Архивировано из оригинала 2013-10-19 . Получено 2013-10-18 .
^ Мариначчи, Джошуа (2009-06-09). "5 самых важных функций JavaFX 1.2". Архивировано из оригинала 2009-06-13 . Получено 2009-06-12 .
^ "JavaFX 1.3 Released, Improves User Experiences". 2010-04-22. Архивировано из оригинала 2011-04-30 . Получено 2010-04-25 .
^ ab Meyer, David (2011-10-06). "JavaFX 2.0 выходит и направляется к открытому исходному коду". ZDNet . Архивировано из оригинала 2011-11-25 . Получено 2011-10-09 .
^ Браун, Грег (2011-08-15). "Введение в FXML" (PDF) . Архивировано (PDF) из оригинала 2012-01-31 . Получено 2011-10-09 .
^ "JDK 7u4 и JavaFX 2.1 выпущены, теперь также включают Mac OS X | Across the Universe". Terrencebarr.wordpress.com . 2012-04-27. Архивировано из оригинала 2016-10-19 . Получено 2016-08-01 .
^ Bair, Richard (2013-02-16). "February Open Source Update". Oracle Corporation . Архивировано из оригинала 2013-02-14 . Получено 2013-02-13 .
^ "Oracle объявляет о выпуске JavaFX с открытым исходным кодом для iOS и Android". Infoq.com. 2013-02-13. Архивировано из оригинала 2013-02-17 . Получено 2013-02-16 .
^ "JDK for ARM 8u33 release notes". Oracle Corporation . 2013-02-16. Архивировано из оригинала 2015-03-14 . Получено 2015-03-09 .
^ Тема, Dalibor (2013-01-27). «Список рассылки Raspberry Pi: Где JavaFX в недавней Java 8u33 для ARM?». Архивировано из оригинала 2015-03-09 . Получено 2015-03-09 .
^ "Будет ли технология JavaFX выпущена в открытом исходном коде?". Архивировано из оригинала 2008-06-12 . Получено 2008-06-07 .
^ Каул, Джит (2008-12-16). "JavaFX — дорога вперед". Архивировано из оригинала 17 декабря 2008 года . Получено 2009-01-03 .
^ Бэр, Ричард (2011-12-02). "Call for patches". Oracle Corporation . Архивировано из оригинала 31 января 2013 года . Получено 2011-12-07 .
^ Сафрата, Павел (2012-12-18). "Больше JavaFX с открытым исходным кодом". Oracle Corporation . Архивировано из оригинала 2012-12-29 . Получено 2013-01-05 .
Библиография
Вос, Йохан; Гао, Вэйци; Чин, Стивен; Айверсон, Дин; Уивер, Джеймс Л. (27 июля 2014 г.). Pro JavaFX 8: Полное руководство по созданию настольных, мобильных и встроенных клиентов Java. Apress . стр. 616. ISBN978-1-4302-6574-0. Архивировано из оригинала 24 октября 2016 г. . Получено 29 октября 2018 г. .
Уивер, Джеймс Л.; Гао, Вэйци; Чин, Стивен; Айверсон, Дин; Вос, Йохан (6 марта 2012 г.). Pro JavaFX 2: Полное руководство по многофункциональным клиентам с технологией Java. Apress . стр. 640. ISBN978-1-4302-6872-7. Архивировано из оригинала 18 марта 2012 г. . Получено 13 марта 2012 г. .
Эбберс, Хендрик (7 июля 2014 г.). Освоение элементов управления JavaFX 8. McGraw-Hill Education . стр. 336. ISBN978-0071833776. Архивировано из оригинала 6 сентября 2015 г. . Получено 9 сентября 2015 г. .
Вивьен, Владимир (25 августа 2010 г.). JavaFX 1.2 Application Development Cookbook. Packt Publishing . стр. 332. ISBN978-1-84719-894-5. Архивировано из оригинала 28 января 2010 г. . Получено 30 августа 2010 г. .
Jordan, Lucas (17 декабря 2009 г.). JavaFX Special Effects: Доведение Java RIA до экстремального уровня с помощью анимации, мультимедиа и игровых элементов. Apress . стр. 300. doi :10.1007/978-1-4302-2624-6. ISBN978-1-4302-2623-9. Архивировано из оригинала 1 сентября 2022 г. . Получено 1 сентября 2022 г. .
Моррис, Саймон (23 ноября 2009 г.). JavaFX в действии. Мэннинг . стр. 375. ISBN978-1-933988-99-3. Архивировано из оригинала 12 января 2012 г. . Получено 18 июля 2012 г. .
Топли, Ким (12 октября 2009 г.). Руководство разработчика JavaFX. Addison-Wesley Professional . стр. 640. ISBN978-0-321-60165-0. Архивировано из оригинала 15 января 2012 г. . Получено 29 мая 2009 г. .
Уивер, Джеймс Л.; Гао, Вэйци; Чин, Стивен; Айверсон, Дин (22 июня 2009 г.). Pro JavaFX Platform: Скрипт, настольные и мобильные RIA с технологией Java. Apress . стр. 500. ISBN978-1-4302-1875-3. Архивировано из оригинала 1 сентября 2022 г. . Получено 1 сентября 2022 г. .
Кларк, Джим; Коннорс, Джим; Дж. Бруно, Эрик (15 июня 2009 г.). JavaFX: Разработка многофункциональных интернет-приложений. Prentice Hall . стр. 384. ISBN978-0-13-701287-9. Архивировано из оригинала 15 января 2012 г. . Получено 29 мая 2009 г. .
Андерсон, Гейл; Андерсон, Пол (15 июня 2009 г.). Essential JavaFX. Prentice Hall . стр. 360. ISBN978-0-13-704279-1. Архивировано из оригинала 15 января 2012 г. . Получено 29 мая 2009 г. .
Уивер, Джеймс Л. (4 мая 2009 г.). JavaFX Script: Динамический Java Scripting для насыщенных Интернет/клиентских приложений. Apress . стр. 200. ISBN978-1-59059-945-7. Архивировано из оригинала 1 сентября 2022 г. . Получено 1 сентября 2022 г. .