一尘不染

JavaFX和OpenJDK

java

我正在尝试确定是否可以为Java应用程序的用户界面切换到JavaFX。我的大多数用户将使用Oracle JRE,该产品已集成了JavaFX。但是,有些人正在使用OpenJDK(在Linux上)。这个(旧的)问题表明OpenJDK与JavaFX的处理非常差。根据这个问题,替代的OpenJFX将仅完全集成到版本9中的OpenJDK中。所以我的问题有两个:

OpenJDK中的JavaFX支持是否仍然如此糟糕?
如果是这样,是否有Linux发行版已经提供了OpenJFX软件包,因此用户不必自己构建它?


阅读 2121

收藏
2020-03-09

共1个答案

一尘不染

我正在尝试确定是否可以为Java应用程序的用户界面切换到JavaFX。我的大多数用户将使用Oracle JRE,该产品已集成了JavaFX。但是,有些人正在使用OpenJDK(在Linux上)。这个(旧的)问题表明OpenJDK与JavaFX的处理非常差。根据这个问题,替代的OpenJFX将仅完全集成到版本9中的OpenJDK中。所以我的问题有两个:

OpenJDK中的JavaFX支持是否仍然如此糟糕?
如果是这样,是否有Linux发行版已经已经开发了JDK 11+的WebStart的开源版本,可以从https://openwebstart.com获得。

谁需要创建包含JavaFX的Linux OpenJDK发行版

开发基于OpenJDK(例如Redhat,Ubuntu等)的Linux发行版的程序包的人员要为包含JavaFX的JDK和JRE创建RPM。然后,这些软件发行商需要将生成的软件包放入其标准发行代码存储库(例如fedora / red hat network yum存储库)中。当前尚未完成,但是如果Java 8于2014年3月发布时Java 8 Linux软件包不包含JavaFX,我将感到非常惊讶。

更新,2019年12月:

现在,JavaFX已与大多数二进制JDK和JRE发行版(包括Oracle的发行版)分离,并且可以作为独立SDK,jmod集合或可从中央Maven存储库获得的库依赖项(概述为https://openjfx.io),因此不需要标准的Linux OpenJDK发行版即可包含JavaFX。

如果要使用包含JavaFX的预构建JDK,请考虑为各种平台提供的Liberica JDK发行版。

有关大量应用程序部署的建议

我建议使用Java的独立应用程序部署模式。

此部署模式的说明为:

应用程序安装在本地驱动器上,并使用Java和JavaFX运行时的专用副本作为独立程序运行。可以以与该操作系统的其他本机应用程序相同的方式启动该应用程序,例如使用桌面快捷方式或菜单项。

你可以从Oracle JDK发行版或包含JavaFX的OpenJDK构建中构建独立的应用程序。目前,使用Oracle JDK更容易做到这一点。

由于Java版本与你的应用程序捆绑在一起,因此你不必担心计算机上可能已预安装了哪个Java版本,它具有什么功能以及它是否与你的程序兼容。相反,你可以针对确切的Java运行时版本测试应用程序,并将其与你的应用程序一起分发。部署应用程序的用户体验将与在其计算机上安装本机应用程序(例如,安装了Windows .exe或.msi,OS X .dmg,linux .rpm或.deb)相同。

注意:独立的应用程序功能仅适用于Java 8和9,不适用于Java 10-13。计划通过JEP 343:打包工具 Java 14 再次从OpenJDK发行版提供对此功能的支持。提供了OpenJFX软件包,因此用户不必自己构建它?

2020-03-09