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,但 OpenJFXJavaFX 可以互换使用,因为没有真正的区别。

【讨论】:

以上是关于Scala + OpenJFX + OpenJDK的主要内容,如果未能解决你的问题,请参考以下文章

javafx 应用程序中缺少标题栏,带有 OpenJFX

Gradle OpenJFx11:错误 - 缺少 JavaFx 运行时组件

在模块路径上使用 OpenJFX 11 JMODS 在 JDK 11 上运行 javafx 示例

打包JavaFX11桌面应用程序

使用 JDK 11+ 运行 JavaFX 应用程序

License分类 + 引入开源软件时License的注意事项