У JavaFX есть проблема.

Это технология разработки программного обеспечения для настольных компьютеров в то время, когда рынок занят приложениями для смартфонов. В названии есть слово «Java» из-за того, что у отрасли временная аллергия на это название.

JavaFX появился на сцене всего за год до того, как Sun Microsystems наконец испустила дух и была приобретена Oracle. Пресса игнорировала любую интересную технологию, предпочитая копаться в туше Sun в поисках содержательных статей о том, почему они больше не могут выжить.

А жаль, потому что JavaFX — действительно выдающаяся технология.

Сначала давайте разберемся с основами. JavaFX по своей сути является платформой для разработки графического пользовательского интерфейса. Вы можете создавать настольные приложения, как в Swing или Winforms. JavaFX доступен для Mac, Windows и GNU/Linux. Он является частью OpenJDK с открытым исходным кодом, а также был портирован на Android, iPhone, Raspberry Pi и другие платформы.

Итак, у нас есть способ создавать приложения с графическим интерфейсом на Java, которые работают на многих разных платформах.

Это означает, что мы можем создавать привлекательные настольные приложения с использованием обширной экосистемы Java, надежной JVM и превосходного языка программирования Java (несмотря на то, что говорят вам недоброжелатели, Java остается одним из лучших языков, которые может предложить эта отрасль). .

Любой, кто использовал Windows WPF, UWP или немного разрабатывал Android, сразу же познакомится с JavaFX. Макеты графического интерфейса создаются просто с помощью FXML, разновидности XML. FXML прост для написания и понимания, с элементами XML для «Кнопки», «Флажка» и так далее.

Эти файлы FXML загружаются для создания «контроллера», который управляет поведением графического интерфейса. Например, если мы создаем кнопку в FXML, мы можем дать ей имя в FXML (атрибут fx:id), затем мы можем создать поле «Кнопка» в нашем классе контроллера. Используя fx:id в качестве имени переменной, аннотируйте его с помощью «@FXML», и JavaFX узнает, что поле «Кнопка» и XML-элемент «Кнопка» — это одно и то же.

Затем мы можем использовать такие методы, как «setTitle», чтобы изменить текст на кнопке, или «setDisable», чтобы затенить/отключить кнопку.

Существует бесчисленное множество подобных методов и множество атрибутов в элементе FXML для таких событий, как «щелчок». Все они устроены одинаково. Создайте атрибут в элементе FXML и присвойте ему значение. Теперь войдите в контроллер и введите то же значение, что и поле или метод, и аннотируйте с помощью «@FXML».

Итак, до JavaFX у нас был Swing. Swing был технически грамотным, но ему не хватало визуального шика, которого ожидают пользователи.

JavaFX решил эту проблему, предоставив возможность изменять внешний вид практически любого аспекта вашего приложения JavaFX с помощью CSS или, по крайней мере, языка, очень похожего на CSS, поскольку он имеет множество специфичных для JavaFX функций, а также не имеет большого многие свойства CSS вы найдете в последней спецификации CSS 3.

Это означает, что с небольшими усилиями можно создавать пользовательские интерфейсы в JavaFX, подобные этому:

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

Уже нет. NetBeans, Java IDE поставляется с «родной упаковкой», которая просто позволяет нам «сохранить» либо установщик Windows, либо пакет приложения Mac.

Пакет будет включать в себя все библиотеки Java, которые вы использовали, все FXML, все CSS, все изображения и шрифты, а также сделает автономный установщик для Windows или пакет .app для вашего Mac, который вы можете скопировать в папку «Приложения» и работать так, чтобы пользователь даже не знал, что это было сделано с помощью Java.

JavaFX был выпущен Sun в предсмертной агонии, СМИ просто не интересовало ничего, кроме крови. JavaFX был выпущен и быстро забыт индустрией, увлеченной социальными сетями, приложениями и практически всем, что выпущено Apple.

Тем не менее, Oracle продолжала разработку, значительную разработку, и незаметно создала одну из лучших доступных сред разработки настольных компьютеров. Что делает его еще более удивительным, так это то, что JavaFX является полностью кросс-платформенным.

Вам может нравиться использовать Swift и Cocoa, но не питайте иллюзий. То, что вы создадите, будет работать только на Mac. То же самое и для Windows, Microsoft, возможно, создала язык высшего уровня на C# и систему графического интерфейса высшего уровня в UWP, но если вы создадите приложение с помощью этих инструментов, вы когда-либо будете запускать это приложение только в Windows 10.

JavaFX не имеет таких ограничений, вы можете разрабатывать на Windows, а затем выпускать на Mac. Вы даже можете использовать проверенный Java JNI для полной интеграции с технологиями Mac.

Если вы пишете настольное приложение, вам необходимо как минимум оценить JavaFX. Java, JVM и JavaFX являются убедительным аргументом в пользу рассмотрения практически любого проекта.