我最近了解到 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 中删除!