2

我最近了解到 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 的人提供了安装说明。
  • 捆绑 JRE 和 JavaFX,并具有强制使用该 JRE 的启动脚本。不理想,因为下载大小会急剧增加,并且每个操作系统都需要单独下载,但我之前制作过捆绑 JRE 的发行版。
  • 如果检测到 Java 11+,则回退到 Swing 而不是 JavaFX。我可能会这样做,因为我的应用程序一开始是 Swing 并且只有一小部分已迁移,但它也没有吸引力,因为我添加的更新的、JavaFX 特定的功能将会丢失。
  • 尝试将 JavaFX 运行时包含为 .jar 文件并手动将其加载到类路径中,也许只有在检测到 Java 11+ 的情况下?

我很好奇你的想法是什么,如果有更好的选择我忽略了。当我采用 JavaFX 时,我没想到有一天它会从 JRE 中删除!

4

1 回答 1

3

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

于 2018-09-01T05:41:02.833 回答