Введение в Java FX
JavaFX представляет инструментарий для создания кроссплатформенных графических приложений на платформе Java.
JavaFX позволяет создавать приложения с богатой насыщенной графикой благодаря использованию аппаратного ускорения графики и возможностей GPU.
С помощью JavaFX можно создавать программы для различных операционных систем: Windows, MacOS, Linux, Android, iOS и для самых различных устройств: десктопы, смартфоны, планшеты, встроенные устройства, ТВ. Приложение на JavaFX будет работать везде, где установлена исполняемая среда Java (JRE).
JavaFX предоставляет большие возможности по сравнению с рядом других подобных платформ, в частности, по сравнению со Swing. Это и большой набор элементов управления, и возможности по работе с мультимедиа, двухмерной и трехмерной графикой, декларативный способ описания интерфейса с помощью языка разметки FXML, возможность стилизации интерфейса с помощью CSS, интеграция со Swing и многое другое.
История JavaFX фактически началась в первой половине 2000-х годов, когда разработчик по имени Крис Оливер (Chris Oliver), будучи работником компании SeeBeyond, разработал для создания графических интерфейсов новый язык F3 (Froms Follows Functions). Впоследствии в 2005 году SeeBeyond была приобретена компанией Sun Microsystems (которая на тот момент развивала язык Java до покупки компанией Oracle). F3 был переименован в JavaFX, а Крис Оливер продолжил работу над новой платформой уже в рамках компании Sun. И в мае 2007 года Sun Microsystems публично анонсировала новую платформу для создания графических приложений. А 4 декабря 2008 года вышел JavaFX 1.0 SDK.
После приобретения Sun Microsystems компанией Oracle в 2010 году была анонсирована, а в 2011 году вышла в релиз версия JavaFX 2.0. В первой версии JavaFX фактически представлял скиптовый язык. Во второй версии был полностью изменен подход. Скриптовый язык был убран, а платформа была полностью переписана фактически с нуля. Теперь создавать приложения можно было с помощью любого языка, который поддерживала JVM. Были добавлены новые API, интеграция со Swing и много других вещей.
Следующими важными вехами в развитии платформы стали версии JavaFX 8 и особенно JavaFX 9, которая вышла в сентябре 2017 года вместе с Java 9 и привнесла в платформу модульность. И если раньше JavaFX поставлялась вместе с Java SE, то сейчас JavaFX отделена от основной функциональности Java SE и используется как отдельный модуль. Последняя версия фреймворка — JavaFX 17 — вышла в сентябре 2021 года.
На данный момент JavaFX представляет предпочтительный способ для создания графических приложений с помощью языка Java, который пришел на смену AWT и Swing. Также стоит отметить, что для работы с JavaFX вместо Java теоретически можно использовать любой язык программирования, который поддерживается JVM.
Установка инструментария
Что необходимо для работы с JavaFX? Прежде всего необходимо установить последнюю версию JDK с официального сайта Oracle: https://www.oracle.com/java/technologies/downloads/.
Стоит учитывать, что версия JDK для работы с JavaFX должна быть от 11 и выше.
JavaFX SDK
Также необходимо загрузить последнюю версию JavaFX SDK с адреса https://gluonhq.com/products/javafx/.

На данной странице можно выбрать дистрибутивы для различных систем и архитектур. Например, если 64-х разрядная OC Windows, то соответственно надо загрузить JavaFX Windows x64 SDK. По сути SDK представляет архив с файлами, и после его загрузки его необходимо распаковать в любое предпочтительное место на жестком диске. Например, в моем случае SDK распакован в папку C:\javafx-sdk-17.0.0.1 .
Модули JavaFX
Если мы откроем папку lib в распакованном SDK, то мы увидим там модули, которые собственно и представляют JavaFX.

При написании кода приложений, а также при их компиляции и запуске мы будем использовать эти модули. Что они делают:
- javafx.base : определяет базовый функционал фреймворка, в частности, функциональность привязки, свойств, коллекций, событий и т.д.
- javafx.controls : определяет элементы управления, диаграммы и скины.
- javafx.fxml : определяет функционал для работы с FXML.
- javafx.graphics : определяет функциональность окон и контейнеров компоновки, жизненного цикла приложения, возможности рисования, пользовательского ввода, анимации, css и т.д.
- javafx.media : определяет функционал для работы с мультимедиа.
- javafx.swing : определяет интерфейс для взаимодействия и внедрения элементов Swing в приложении JavaFX.
- javafx.web : определяет функционал WebView.
- javafx-swt : модуль для взаимодействия с SWT.
Знакомство с JavaFX

Java FX – это мощный инструмент, который помогает создавать клиентские приложения, оснащенные насыщенными графическими интерфейсами. Технология, развивающаяся в рамках проекта OpenJFX. Она включает в себя все преимущества Java для разработки приложений.
JavaFX является современным, практичным и удобным инструментом. Он широко используется в разработке игр и десктопных приложений. Оснащен мощными средствами и дополнительными библиотеками, благодаря которым программисты могут создавать читабельные и компактные исходные коды.
История
JavaFX – проект, созданный в первой половине 2000-х годов. Его реализацией занялся некий Крис Оливер, разработчик SeeBeyond. Он создал для графических интерфейсов язык F3. В 2005 году SeeBeyond была выкуплена Sun Microsystems – она развивала Java до покупки корпорацией Oracle. F3 получил совершенно новое название – JavaFX.
Первые наработки платформы были представлены в мае 2007 года. Ее Sun Microsystems анонсирована в качестве инструмента создания графических приложений. В начале декабря 2008 года состоялся официальный релиз Java FX 1.0 SDK.
Чуть позже организация была выкуплена Oracle – права на рассматриваемую платформу перешли к ней. В 2010 корпорация анонсировала, а 2011 выпустила 2 версию Java FX. Она была полностью переписана, а ранее используемый скриптовый язык убрали. С тех пор приложения можно было создавать на любом языке, поддерживающем JVM.
В сентябре 2021 года вышла JavaFX 17. Это последняя актуальная версия на сегодня. Разработчики часто используют для обучения JavaFX 8 и 9.
Сейчас рассматриваемый модуль является предпочтительным способом создания графических приложений на Джаве. Он служит заменой AWT и Swing.
Сферы применения
Данная платформа используется при создании приложений с продвинутым GUI. Программное обеспечение, написанное через технологии JavaFX, получается производительным, надежным и достаточно «легким».
Соответствующий инструмент активно используется в:
- IDE;
- игровом программном обеспечении;
- редакторах и проигрывателях музыки/видео;
- графических и текстовых редакторах.
Это – основное средство написания десктопных приложений. Некоторые мобильные программы, поддерживающие ПК-версии (Telegram, Skype, WhatsApp и им подобные), тоже работают с данной платформой.
При помощи JavaFX пользователи программисты смогут преобразовывать коды в нативные образы, после чего активно использовать на мобильных устройствах. Платформа активно поддерживается встроенными системами, в числе которых находится Raspberry Pi.
Что может платформа
Рассматриваемый инструмент разработки оснащен впечатляющим пакетом средств программирования для GUI. Вот некоторые функции, с которыми пользователям предстоит иметь дело:
- шрифты;
- эффекты;
- анимация;
- диаграммы;
- веб-компоненты;
- управление контейнерами;
- оперирование UI;
- макеты;
- базовые функции – Stage, FXML, Scene и им подобные.
Проект оснащен богатой документацией, в которой рассказывается обо всех встроенных модулях, классах и иных элементов платформы. Вся она написана на английском языке. Русскоговорящие пользователи тоже могут найти туториалы и документацию на «родном» языке, но ее значительно меньше.
Основные плюсы проекта
Задумываясь над использованием JavaFX, необходимо помнить о его преимуществах и возможностях. Данный «пакет» активно применяется разработчиками – не только новичками, но и уже более опытными программистами. Он обладает следующими сильными сторонами:
- Дает возможность писать понятные и управляемые на Java коды. Их удобно не только отслеживать, но и обновлять.
- Не имеет проблем с кроссплатформенностью и дает возможность формирования нативных образов для мобильных устройств.
- Поддерживает множество библиотек, необходимых для создания GUI.
- Умеет работать с CSS, а также 2D и 3D-графикой без дополнительных модулей и расширений.
- Поддерживает многопоточность.
- Обеспечивает разработчика многочисленными готовыми инструментами для создания приложений с «сильной» графикой.
- Поддерживается Java-сообществом, благодаря чему разработчики могут получить помощь по любому вопросу, связанному с платформой.
- Регулярные обновления и доработки.
- Простое и легкое освоение. Разобраться с JavaFX будет в разы проще разработчикам, которые уже знакомы с Java и ему подобными языками программирования.
- Приложение JavaFX, преобразованное в нативный исполняемый файл, будет занимать на порядок меньше пространства на устройстве. Такое программное обеспечение запускается за несколько секунд.
Изучать инструмент рекомендуется всем программистам, работающим с Java и ему подобным языкам. Это современная и удобная платформа, которая позволяет выпускает легкие, практичные, детализированные проекты с потрясающими графическими интерфейсами. Она пришла на замену Swing.
Сравнение со Swing
Swing – технология в Джаве, которая используется для работы с графическими интерфейсами. Она плохо развивалась, поэтому на смену ей пришла платформа JavaFX. Эти две технологии имеют как схожие, так и принципиально различные черты:
| Java FX | Swing |
| Исходный код имеет высокую читабельность. Он является чистым. | В программном коде приложения могут встречаться устаревшие модули. |
| Применяется для создания программного обеспечения с насыщенным пользовательским интерфейсом. | Используется для работы с обычным GUI |
| Имеет встроенную поддержку MVC | Не оснащен возможностью работы с MVC |
| Поддерживается дружелюбным сообществом. Регулярно обновляется и совершенствуется. | Новые опции в Swing не добавляются. |
| Поддерживает CSS и встроенный API для многопоточности. | Не работает с CSS – стили задаются через программный код. Для многопоточности необходимо устанавливать дополнительные API. |
| Оснащен FXML для декларативного создания макетов | Не поддерживает декларативную работу с макетами |
| Работает с 3D-графикой по умолчанию | Для работы с трехмерной графикой требуется установка дополнительных плагинов. |
| Поддерживает привязку устройств. | Не имеет опций привязки устройств. |
Swing – технология работы с графикой, которая входит в состав JDK. JavaFX отсоединен от соответствующего «пакета», начиная с Java 11. Официальная поддержка рассмотренной платформы компанией Oracle прекратится в 2025 году, но она все равно будет работать. Обновления для нее будут выпускаться свободными разработчиками.
Основные библиотеки
JavaFX для разработки приложений предусматривает обширный пакет библиотек. Основная их масса доступна для скачивания, но в стандартный пакет включены основные фреймворки. К ним относят:
- JacFX. Библиотека для структурирования приложения через слабо связанные многоразовые компоненты JavaFX. Задачи могут быть независимыми от изменений в пользовательском интерфейсе с клиентской программы. Данный прием позволяет избежать проблем, связанных с многопоточностью. Поддерживает асинхронные процессы, коммуникации на основе шин сообщений.
- RichTextFX – инструменты создания текстовых и кодовых редакторов. Такие приложения будут уметь выделять синтаксические элементы и применять разные шрифты.
- Ikonli – модуль для создания кастомных иконок.
- MigLayout – библиотека создания и оперирования макетами.
Демо приложения JavaFX можно увидеть здесь . Они наглядно демонстрируют работу основных библиотек и модулей платформы.
JavaFX: писание и особенности

The JavaFX – платформа, базирующаяся на Java и используемая для написания программ с насыщенным графическим интерфейсом. Инструмент GUI для Джавы, с которым удобно работать. «Библиотека», нацеленная на создание настольных приложений и разнообразных игр.
The JavaFX заменяет Swing за счет GUI-инструментов. Данная платформа дает возможность стилизовать файлы компоновки (XML), а также делать их более симпатичными через CSS. Разработчиком The JavaFX выступила компания Oracle. Его основными конкурентами являются Microsoft Silverlight и Adobe Flash.
Начиная с Java 11 версии, The Java FX не входит в JavaSE. Компанией Oracle над ней больше не ведется разработка. Этот проект развивается в качестве отдельного модуля. Его обновлением занимается организация Gluon. Oracle поддерживает The Java FX в JDK 8 до марта 2025 года.
Немного истории
Рассматриваемая платформа – это удобный инструмент для программиста игр и настольного программного обеспечение. Технология, которая была впервые продемонстрирована Sun Microsystems на конференции JavaOne в 2007 году. Уже в декабре 2008 появилась первая версия платформы. Она поддерживала:
- средства разработки;
- интегрированную среду программирования NetBeans IDE 6 версии;
- инструменты и плагины для импорта графики в приложения The JavaFX (Production Suite).
Платформа стала стремительно развиваться и к марту 2014 вышла ее 8 версия. В The JavaFX 8 поддерживается 3D-графика, сенсорный ввод и печать. Это последняя актуальная версия «пакета».
Ключевые особенности JavaFX
Перед использованием рассматриваемого пакета разработчики должны знать его ключевые особенности. К преимуществам платформа The JavaFX относят следующие моменты:
- Поставка с достойным набором частей графического интерфейса. Разработчик сможет сразу работать с текстовыми полями, деревьями, меню, диаграммами, таблицами, кнопками и так далее.
- Совместимость с CSS-стилями. Допускается использование специального формата для создания GUI – FXML. Данный прием делает размещение пользовательского графического интерфейса, а также его изменение проще. Разработчику не потребуется долго разбираться в коде программы.
- Поддержка готовых к эксплуатации частей диаграмм. Опция полезна при создании базовых «графиков».
- Работа с 3D-графикой.
- Простое осваивание – изучить принципы работы The JavaFX и научиться создавать с его помощью программное обеспечение способен даже новичок.
- Регулярные обновления и OpenSource.
- Поддержка технологий нативных образов. С ее помощью разработчики смогут преобразовывать приложения The JavaFX в нативный исполняемый документ. Он запускается очень быстро, занимая на устройстве на порядок меньше пространства.
Соответствующая платформа поддерживает многопоточность. Разобраться с The JavaFX будет проще тем, кто уже знает Java и ему подобные языки разработки. Код, полученный при помощи данной «технологии», будет понятным и читабельным.
Основные инструменты и возможности
Рассматриваемая платформа поддерживает API для GUI-компонентов. Среди основных ее инструментов выделяют:
- базовые опции – Stage, Sence, FXML и так далее;
- макеты – Text Flow, HBox, VBox, Border Pane;
- системы управления UI – Label, Button, MenuBar, TextField;
- средства оперирования контейнерами – Accordion, TablePlane;
- веб-пакеты – WebView;
- диаграммы – BarChart, PieChart;
- шрифты;
- эффекты;
- анимацию.
Модули, классы и иные компоненты платформы подробно описаны в документации. Она создана на английском языке.
Дополнительные библиотеки и фреймворки
Изучаемая платформа разработки поддерживает множество дополнительных компонентов и библиотек. Все они предназначаются для упрощения создания итогового приложения.
Наиболее распространенными дополнительными инструментами являются:
- Ikonli – библиотека, включающая в свой состав разнообразные пакеты для создания кастомных иконок.
- Skija – используется для обеспечения Java-биндингов для Skia (так называется OpenSource библиотека для насыщенной 2D-графики). Библиотека, предоставляющая программисту надежные и высокопроизводительные инструменты разработки. Включает в себя работы с цветовыми пространствами, современной типографией, оптимизированный GPU-рендеринг.
- JacpFX – пакет, помогающий писать насыщенные текстовые редакторы С его помощью поддерживается создание кодовых редакторов с выделением синтаксических компонентов. Библиотека позволяет работать со шрифтами.
- MigLayout – open-source проект, используемый для написания макетов и их последующим манипулированием. Через этот инструмент удается формировать лаконичные и понятные коды, при помощи которых любой сможет сложить четкое представление о макете.
Через GitHub-репозиторий jjenkov программисты смогут обнаружить большое количество демо-приложений Java, написанных при помощи The JavaFX. С их помощью осуществляется демонстрация различных компонентов изучаемого фреймворка.
Области применения
В разработке изучаемая платформа широко используется при создании десктопных приложений. Она пригодится разработчикам, которые пишут:
- разнообразные редакторы – текста и графики;
- IDE;
- проигрыватели и программы редактирования аудио и видео файлов;
- игровое программное обеспечение.
Платформа активно используется при разработке мобильных и веб-приложений (WhatsApp, Skype, Telegram). Данный инструмент преобразовывает код в нативные образы и используется в гаджетах. Его задействуют в некоторых встроенных систем. Пример – Raspberry Pi.
Отличие от Swing
Swing – устаревший инструмент для GUI-разработки. На смену пришел The JavaFX. Новая платформа отличается от предыдущей:
| The JavaFX | Swing |
| Используется для насыщенных пользовательских приложений. Проекты будут включать в себя современный интерфейс | Работает со стандартным GUI |
| Поддерживает чистый код | Имеет множество устаревших компонентов |
| Встроенная поддержка MVC | Не обладает поддержкой MVC «по умолчанию» |
| Активно обновляется и дорабатывается | Новые опции в Swing не добавляются |
| Умеет работать с CSS | Формирование стилей осуществляется только за счет кодовых возможностей |
| Предусматривает API для работы с многопоточностью | API для многопоточности отсутствует |
| Поддерживает 3D-графику «по умолчанию» | Для работы с 3D требует дополнительные API |
| Предлагает привязку устройств | Не имеет привязки устройств |
Стоит обратить внимание на то, что с Java 11 рассмотренная платформа отсоединена от JDK. Swing до сих пор включен в него.