java - oracle JDK 8 中的 JavaFx 是否与 openjfx 8 版本相同?oracle jdk 8中的javafx和openjfx8有什么关系?
问题描述
我们正在从 Oracle jdk8 迁移到 OpenJDK 8。但是我们的系统有 JavaFX 代码,需要从 JavaFX 迁移到 OpenJFX。
我想知道Oracle jdk8中的JavaFX和openjfx8有什么关系。谁能为我解释一下?
解决方案
Oracle 非捆绑和开源JavaFX库
Oracle 将其自己的 JavaFX 实现与其Oracle JDK产品的 Java 8 版本捆绑在一起。
后来,甲骨文停止了该捆绑包。
OpenJFX项目
大约在同一时间,Oracle 开源了其 JavaFX 实现,使该源代码成为OpenJDK项目的子项目。该子项目被称为OpenJFX(因为 Oracle 保留其“Java”品牌的商业权利)。请参阅它的 GitHub 页面和它的 OpenJDK wiki 页面。
Oracle 现在与Gluon公司共同领导 OpenJFX 开发。Gluon 销售其他库的支持、许可证和服务。甲骨文也可能出售支持。
OpenJFX 正在积极开发中。主要版本大约与 Java 的每个主要版本同时发布。Java 17将于本月(2021-09)发布,OpenJFX 17 版本已经可用。JavaFX 17 需要 JDK 11 或更高版本。请参阅JavaFX 17 的发行说明。
有关更多信息和开发人员文档,请参阅 OpenJFX 站点:https ://openjfx.io/
Oracle JDK是从 OpenJDK 构建的
你说:
我们正在从 oracle jdk8 迁移到 openjdk 8
Oracle JDK 产品基于 OpenJDK。Oracle 已承诺在它们之间实现功能对等。唯一的区别是 (a) Oracle 销售对 Oracle JDK 的支持,并且在生产中使用时需要付费(但不用于开发和测试),并且 (b) Oracle 保留立即将任何必要的修复程序直接发送给其付费客户的权利无需等待修复程序通过 OpenJDK 流程。
部署 JavaFX/OpenJFX 库的选项
当前版本的 Oracle JDK 不再捆绑 JavaFX 库。因此,无论您选择哪种 Java 发行版(Pivotal、Azul Systems、Microsoft、SAP、Amazon、BellSoft、Oracle、Red Hat/IBM、Adoptium/AdoptOpenJDK 等),您都需要解决提供必要 OpenJFX 的问题图书馆。
一种选择是将库与您的应用程序捆绑在一起。新的jlink和jpackage工具可能会有所帮助。
另一种选择是将 OpenJFX 库的副本放在用户机器的类路径中。
第三种选择是使用包含 OpenJFX 库的 JDK 发行版。至少有两家公司提供了包括 OpenJFX 在内的 JDK 发行版的变体:Azul Systems 和 BellSoft。
OpenJFX 从版本 11 开始
你说:
但是我们的系统有javafx代码,需要从javafx迁移到openjfx?
我只看到编号为 11 到 18 的 OpenJFX 版本。只有 OpenJFX 11 和 17 将获得长期支持。
他们为 OpenJFX 推荐 Java 16,最低要求为 Java 11。因此您可能无法将基于 Java 8 的项目迁移到 OpenJFX。
建议:迁移到版本 17
Java 17将于本月到期,预计将被指定为长期支持 (LTS)版本。我建议您考虑将您的 Java 8 应用程序更新到 Java 17 和 OpenJFX 17。Java 和 JavaFX 自版本 8 以来都有了突飞猛进的发展。
首先研究jewelsea通过JavaFX 和OpenJFX 的各种版本讨论技术变化的答案。然后仔细阅读这两个产品线的所有发行说明,记录您的应用程序的任何潜在问题。然后试一试。尝试转换,看看会出现什么问题。尝试修复它们。如果你最终成功了,你就会为未来做好准备。
资源
您可能想阅读这些白皮书:
- Oracle更新 Java 客户端路线图(2020-05)
- Java Champions 仍然免费提供 Java (2019-03)
- Oracle 的 Oracle Java SE 支持路线图(2021-04)
推荐阅读
- java - 如何在 java 中修改 HttpServletRequest 正文?
- vue.js - 是否可以在输入元素 Semantic-UI-Vue 中触发 foucs 事件的弹出窗口
- python - 如何动态设置文件 Python 的路径?
- php - 验证失败不会停止 livewire 组件中的代码执行
- amazon-web-services - 列中的 Aws 描述实例名称和 PublicIP
- python - Posting list to Json without square brackets in Python
- java - Spring boot - automatically activate profile based on operating system
- javascript - JavaScript, MutationObserver misses mutations
- reporting-services - SSRS hide/show logic breaks in preview when running on server
- c++ - Find the prototypes of some Windows Kernel APIs like NtAllocateUserPhysicalPagesEx