我们正在从Oracle jdk8迁移到OpenJDK 8。但是我们的系统有JavaFX代码,需要从JavaFX迁移到OpenJFX。
我想知道OracleJDK8中的JavaFX和openjfx8之间的关系是什么。谁能给我解释一下吗?
背景资料
这些信息是对巴兹尔优秀答案的补充,该答案已经全面涵盖了该主题的大部分相关信息。
这个问题是关于JavaFX8的,它现在已经过时了。此处提供的特征差异信息用于历史目的。
强烈建议所有现有项目从JavaFX8迁移到最新的JavaFX版本,所有新项目使用最新的JavaFX版本(例如JavaFX17),该版本基于openjfx源代码。
什么是Oracle JDK 8,什么是OpenJDK中的JavaFX8?
OracleJDK8是JDK和JRE的发行版,其中包括JavaFX8的实现。
JavaFX8作为OpenJDK项目的一部分是开源的。您可以在OpenJDKGithub站点上找到OpenJDK项目的JavaFX8源代码链接(外部链接可能在将来某一天消失或消亡)。
Oracle JDK 8很大程度上是由这些开源组件以及下面概述的几个闭源组件构建的。
仅使用开源代码(减去下面概述的闭源功能)就可以构建包含JavaFX 8的OpenJDK 8的完整版本。
但是,许多基于OpenJDK 8的发行版(例如,那些作为JDK和JRE实现提供给普通Linux发行版的发行版)不包括OpenJDK项目的JavaFX实现部分。
此外,来自IBM等供应商的第三方JDK发行版也没有包含JavaFX实现。
因此,对于JavaFX 8开发,使用的主要发行版是Oracle JDK/JRE 8,而不是只包含JavaFX 8的OpenJDK实现的发行版。
Oracle JDK 8和OpenJDK 8源代码实现/功能差异
此信息基于以下信息:
我再也找不到网上描述这些差异的官方来源的链接。
Oracle JDK 8实现了一些在OpenJDK 8开源实现中不可用的功能。与JavaFX相关的组件:
对于大多数用户来说,除了缺乏WebStart/Applet支持之外,两个版本之间的功能/特性差异并不重要。
Oracle JDK实现的许可模型存在差异,包括纯从OpenJDK中的OpenJFX项目源构建的JavaFX和JavaFX版本。如果这些许可差异细节对您很重要,我鼓励您对这个主题进行自己的研究。
JavaFX9
截至Java9,JavaFX不建议使用VP6编码,Oracle WebStart/Browser嵌入式应用程序部署技术也不建议使用。
因此,尽管该功能包含在Oracle SDK的这些版本中,而不是OpenJFX源代码中,但该技术已被标记为将来删除(这是由JDK/JRE/JavaFX 11版本实现的,如果不是更早的话)。
JavaFX11
对于JavaFX 11,上面关于功能差异的信息完全无关紧要,因为JavaFX 11的下载页面指出:
从JDK 11开始,javafx.*模块不再作为JDK的一部分包含。它们现在作为独立的、未捆绑的OpenJFX版本单独发布。它们可以作为maven构件与Maven/Gradle一起使用,也可以作为独立的SDK,其中包含用于jlink
的jmod
文件。
所以,Java11没有特定于Oracle的JavaFX版本(据我所知),对于这些版本,只有开源openjfx项目(或其他创建其打包的发行版)中的模块可用基于单一openjfx源)。
有关JavaFX11的更多信息,请参阅openjfx。io框架用户站点或内部openjfx开发人员站点。
Oracle将自己的JavaFX实现与其Oracle JDK产品的Java8版本捆绑在一起。
后来,甲骨文停止了这个捆绑包。
大约在同一时间,Oracle将其JavaFX实现开源,使该源代码成为OpenJDK项目的一个子项目。该子项目称为OpenJFX(因为Oracle保留其“Java”品牌的商业权利)。查看其GitHub页面和OpenJDK wiki页面。
Oracle现在与Glion公司分享OpenJFX开发的领导权。Gluon销售支持、附加库的许可证和服务。甲骨文也可能出售支持。
OpenJFX正在积极开发中。主要版本的发布时间与Java的每个主要版本大致相同。Java17将于本月(2021-09)发布,OpenJFX17版本已经发布。JavaFX17需要JDK11或更高版本。请参阅JavaFX17的发行说明。
有关更多信息和开发人员文档,请参阅OpenJFX网站:https://openjfx.io/
你说:
我们正在从OracleJDK8迁移到OpenJDK8
Oracle JDK产品基于OpenJDK。Oracle已promise实现它们之间的功能对等。唯一的区别在于:(a)Oracle销售对Oracle JDK的支持,在生产中使用时需要付费(但不用于开发和测试),以及(b)Oracle保留立即将任何必要的修复程序直接发送给付费客户的权利,而无需等待修复程序通过OpenJDK流程。
Oracle JDK的当前版本不再捆绑JavaFX库。因此,无论您选择哪种Java发行版(Pivotal、Azul Systems、Microsoft、SAP、Amazon、BellSoft、Oracle、Red Hat/IBM、Adoptia/AdoptOpenJDK等),您都需要解决提供必要的OpenJFX库的问题...
一个选项是将库与应用捆绑在一起。新的jlink和jpack工具可能会有所帮助。
另一个选项是将OpenJFX库的副本放在用户机器的类路径上。
第三种选择是使用包含OpenJFX库的JDK发行版。至少有两家公司提供了JDK发行版的变体,包括OpenJFX:Azul Systems和BellSoft。
你说:
但是我们的系统有javafx代码,需要从javafx迁移到openjfx吗?
我只看到编号为11到18的OpenJFX版本。只有OpenJFX 11和17具有长期支持。
他们建议OpenJFXJava16,最低要求Java11。因此,您可能无法将基于Java8的项目迁移到OpenJFX。
Java17将于本月发布,预计将被指定为长期支持(LTS)版本。我建议您考虑将java 8应用程序更新为java 17和OpenJFX 17。自版本8以来,Java和JavaFX都有了长足的发展。
首先,学习jeWelSea的答案,讨论通过各种版本的JavaFX的技术变化
您可能需要阅读以下白皮书:
在OSGi bundles中,用一个版本号导出和导入包。包仍然定义了一个版本。这在我看来是多余的。
我试图找到解释这种差异的视频或文本,但没有找到任何能说服我的东西。我才刚刚开始,如果可能的话,我只想专注于IDE。我正在研究JScript(vue)框架,我已经在使用VSCode来实现这一点。 附言:原谅我的英语。我知道这很可怕 坦克
我刚刚开始使用JavaFx(带有FXML),我想知道是否有一种方法可以个性化列表视图项在JavaFx ListView中的显示方式。我想知道是否有类似于WPF ListView的方法。JavaFx ListView的项目模板。 在WPF中,我们可以定义项目在ListView中的显示方式(带有组合控件以获取项目视图的选项) 示例: lvDataBding ListView的项在视图代码后面的代码中指
数据类MyObj(Field1:String、Field2:Int、Field3:Int、Field4:String......Field10:Int) 我有一个 如果我这样做: 1)flatMap在那里是并行执行还是顺序执行?2)如果嵌套的flatMap是顺序的,有没有办法让它们像zip一样并行?
问题内容: 与MYSQL sha1相关的“盐”是什么?我不知道与sha1密码加密相关的盐是什么?有人可以解释一下吗? 问题答案: 盐是添加到您想要以一种哈希方式加密的密码(或其他机密)中的值。这意味着它可以在密码之前,之后或内部,只要它的位置和值与给定提供的密码一致。 它的作用是减轻字典攻击(基本上是不加盐就预先加密的常见密码的字典)从被用来“猜测”一种单向密码,只要攻击者不知道哈希。如果每个密码
目前,我的POC不使用,而是使用和。看起来就足够了。现在,我不知道应该如何处理我现有的,它在我的Spring MVC REST应用程序中工作得很好。