Scala + OpenJFX + OpenJDK
Posted
技术标签:
【中文标题】Scala + OpenJFX + OpenJDK【英文标题】: 【发布时间】:2019-10-07 21:35:24 【问题描述】:我即将开始一个使用 Scala 和 JavaFX/OpenJFX 的新 GUI 项目。
上次我参与 Java 8 是最先进的,JavaFX 与 JDK 和 JRE 集成,Scala 使用 JDK 8 进行构建,Jigsaw 不存在,Oracle 提供(免费)(错误)修复几乎永远。
现在,几年后,情况发生了相当大的变化:Java 11+ 是我们应该使用的,JavaFX 已经解绑,它的开发继续作为 OpenJFX(或多或少)独立于 Java,Jigsaw 就在那里Oracle 强制用户每 6 个月升级一次环境。
如果不是因为 Scala 似乎仍然在 JDK 8 上运行,OpenJDK 构建不包含 JavaFX,并且 AFAIR,OpenJFX 不适用于 Java 11 之前的 Java 版本,那么这种变化不会太糟糕。
所有这一切都让我想到了一个问题:使用 JavaFX/OpenJFX 作为 GUI 工具包来实现 Scala 应用程序会使用什么工具堆栈?
将 Scala 与 JDK(不是 JRE!)11+ 一起使用是否安全?
【问题讨论】:
“Oracle 强制用户每 6 个月升级一次环境。” ...这并不准确。与其他几个流行的开源项目一样,Java 已经进入了一个更快速的开发周期。但是,截至目前,长期支持的唯一 Java 版本是 Java 11(可能仍然是 8)。将作为长期支持版本提供的下一个 Java 版本是 Java 14。Redhat 已同意在其开发者论坛中提供最新版本的 Java 11 JDK(当前为 11.0.3)。 【参考方案1】:Oracle 强制用户每 6 个月升级一次环境。
正如comments 中所述,这不是真的。您仍然可以使用 JDK 8。如果您想要 Oracle LTS,请使用 Java 11。还有其他公司将 LTS 提供给其他 OpenJDK 版本(RedHat JDK、Azure JDK...)。 Mark Reinhold(首席 Java 架构师)在他的演讲中多次解释了这一点(1、2 或any of his talks,他在过去 2 年中每年重复 3 次)。
使用 JavaFX/OpenJFX 作为 GUI 工具包来实现 Scala 应用程序会使用什么工具栈?
我不是 Scala 开发人员,但可以使用任何最新的 OpenJDK 构建 Scala allows,并根据您是否需要以及需要什么支持,支持哪个 OpenJDK 版本。我敢打赌 OpenJDK 11 将满足您的所有需求。
JavaFX 已从 Oracle JDK 中删除,但从未捆绑在 OpenJDK JDK1 中。使用 OpenJDK 时,您可以轻松地将 OpenJFX2 捆绑为依赖项,作为外部 JAR 或通过依赖项管理器(Gradle、Maven...)。 JavaFX/OpenJFX 网站是https://openjfx.io,其中包含有关如何操作的说明。
JavaFX/OpenJFX 版本与 JDK 并行(或多或少)发布,并支持 OpenJDK 的 1 个版本(OpenJFX N 支持 JDK N-1 和 JDK N,也许 JDK N- 2...)。因此,如果您使用 OpenJDK 11,则可以使用 OpenJFX 11 或 12。OpenJFX 13+ 可以工作,但不能保证。
在 JDK(不是 JRE!)11+ 中使用 Scala 是否安全?
如果您的 Scala 版本支持,OpenJDK 11+ 和 OpenJFX 11+ 是安全的。请注意,JRE 已从 JDK 中删除,因此无关紧要。
1OpenJDK JDK 是正确的引用方式,就像 Oracle JDK,但大多数人只是使用 OpenJDK。
2OpenJFX 之于 JavaFX OpenJDK JDK 之于 Oracle JDK,但 OpenJFX 和 JavaFX 可以互换使用,因为没有真正的区别。
【讨论】:
以上是关于Scala + OpenJFX + OpenJDK的主要内容,如果未能解决你的问题,请参考以下文章
Gradle OpenJFx11:错误 - 缺少 JavaFx 运行时组件