我将开始使用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个月升级一次环境。
如comments中所述,这是不正确的。您甚至还可以使用JDK 8。如果需要Oracle LTS,请使用Java11。还有其他公司将LTS赋予其他OpenJDK版本(RedHat JDK,Azure JDK ...)。 Mark Reinhold(首席Java架构师)在演讲中多次解释了这一点(1,2或any of his talks,在过去的两年中,他每年重复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。OpenJFX13+可以工作,但不能保证。
将Scala与JDK(不是JRE!)11+一起使用是否安全?
如果您的Scala版本支持它,则OpenJDK 11+和OpenJFX 11+是安全的。请注意,JRE已从JDK中删除,因此无关紧要。
1 OpenJDK JDK是引用它的正确方法,就像Oracle JDK一样,但是大多数人只是使用OpenJDK。
2 OpenJFX对JavaFX就像OpenJDK JDK对Oracle JDK一样,但是OpenJFX和JavaFX可以互换使用,因为没有真正的区别。