针对Java 8构建的JavaFX应用程序-如何保持Java 11的运行?

时间:2018-09-01 04:31:49

标签: javafx java-11 javafx-11

我最近了解到JavaFX并未包含在Java 11中,并且对它如何工作有疑问。

现在,我维护一个针对Java 8的应用程序,主要使用Swing,但使用一些JavaFX,并且拥有非开发人员用户群。其中一些用户使用的是较早的操作系统,因此我想继续针对Java 8。

但是,Java 11将于下个月发布,我担心某些较新的操作系统上的用户将升级到Java 11,并且该应用程序的JavaFX组件将停止工作。

那么,如果您希望继续以Java 8为目标,但是让JavaFX适用于安装JRE 11的人员,那么最佳的前进方向是什么?我看到了几种选择,没有一个是完美的:

  • 需要单独安装JavaFX。如果是这样,我需要知道哪个版本-最有可能来自https://gluonhq.com/products/javafx/的特定于操作系统的SDK?由于这是另一次安装,因此并不理想,但是我已经为没有Java的用户提供了安装Java的说明。
  • 将JRE和JavaFX捆绑在一起,并具有强制使用该JRE的启动脚本。这并不理想,因为下载大小会急剧增加,并且每个操作系统都需要单独下载,但是我之前发行的发行版将JRE捆绑在一起。
  • 如果检测到Java 11+,请转回Swing而不是JavaFX。我可以这样做,因为我的应用程序最初是从Swing开始的,并且只迁移了一部分,但是由于我添加的JavaFX特定的新功能会丢失,因此它也没有吸引力。
  • 尝试将JavaFX运行时包含为.jar文件,并手动将其加载到类路径中,也许仅在检测到Java 11+时才可以?

我很好奇您的想法,如果有更好的选择,我就忽略了。我没想到有一天我采用JavaFX时会将JavaFX从JRE中删除!

2 个答案:

答案 0 :(得分:2)

我认为,您要求用户在其客户端计算机上安装Java的日子已经过去。更好的解决方案是创建一个依赖于操作系统的安装程序,将所有内容与应用程序捆绑在一起。我也想知道这样的捆绑包的大小是否真的仍然重要。从YouTube下载的单个视频可能更大。相反,通过捆绑,您可以省去很多麻烦。

答案 1 :(得分:0)

现在建议您将JRE与应用程序捆绑在一起。

(仍然)很难找到与JavaFX打包在一起的官方OpenJDK 11。这是我唯一可以找到的“ ZuluFX”: youtube video