我最近了解到 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 中删除!
最佳答案
在我看来,要求用户在其客户端计算机上安装 Java 的日子已经结束了。更好的解决方案是创建一个依赖于操作系统的安装程序,它将所有内容与应用程序捆绑在一起。我还想知道这样的 bundle 的大小是否仍然很重要。从 YouTube 下载的单个视频可能要大得多。相反,通过捆绑,您可以省去很多麻烦。
关于针对 Java 8 构建的 JavaFX 应用程序 - 如何在 Java 11 上保持运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52124877/