首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >oracle 8中的JavaFx是否与openjfx 8版本相同?oracle 8中的javafx与openjfx8之间的关系是什么?

oracle 8中的JavaFx是否与openjfx 8版本相同?oracle 8中的javafx与openjfx8之间的关系是什么?
EN

Stack Overflow用户
提问于 2021-09-09 01:48:14
回答 2查看 2K关注 0票数 7

我们正在从甲骨文jdk8迁移到OpenJDK 8,但是我们的系统有JavaFX代码,需要从JavaFX迁移到OpenJFX。

我想知道甲骨文中的JavaFX与openjfx8之间的关系是什么。有人能帮我解释一下吗?

EN

回答 2

Stack Overflow用户

发布于 2021-09-09 02:16:34

Oracle解包和开源的JavaFX库

Oracle正在将自己的JavaFX实现与其Oracle产品的Java8版本捆绑在一起。

后来,Oracle停止了这个包。

OpenJFX项目

同时,甲骨文开源了它的JavaFX实现,使该源代码成为OpenJDK项目的一个子项目。这个子项目被称为OpenJFX (因为甲骨文保留了它的“Java”品牌的商业权利)。见其GitHub页面它的OpenJDK维基页面

甲骨文现在与OpenJFX公司共同领导胶子的开发。胶子出售对其他库和服务的支持、许可证。甲骨文也可能出售支持。

OpenJFX是积极开发的。一个主要版本与Java的每个主要版本几乎同时到达。Java 17将于本月(2021-09)发布,OpenJFX 17版本已经可用也将发布。JavaFX 17需要JDK 11或更高版本。见https://github.com/openjdk/jfx/blob/jfx17/doc-files/release-notes-17.md

有关更多信息和开发人员文档,请参见OpenJFX站点:https://openjfx.io/

Oracle是由OpenJDK构建的

你说过:

我们将从oracle jdk8迁移到openjdk 8。

Oracle产品基于OpenJDK。甲骨文致力于它们之间的功能对等。唯一的区别是:(a) Oracle出售对Oracle的支持,在生产中使用时需要付费(但不用于开发和测试),(b) Oracle保留直接将任何必要的修补程序直接发送给其付费客户的权利,而无需等待修补程序在OpenJDK过程中顺利完成。

部署JavaFX/OpenJFX库的选项

Oracle的当前版本不再绑定JavaFX库。因此,无论您选择哪种Java发行版(Pivotal、Azul Systems、Microsoft、SAP、Amazon、BellSoft、Oracle、Red /IBM、Adoptium/AdoptOpenJDK等等),您都需要解决提供必要的OpenJFX库的问题。

一种选择是将库与应用程序捆绑在一起。新的jlink和jpackage工具可能会有所帮助。

另一个选项是将OpenJFX库的副本放在用户机器的类路径上。

第三种选择是使用包含OpenJFX库的JDK发行版。至少有两家公司提供了包括OpenJFX在内的JDK发行版的不同版本:

  • 来自阿祖尔系统公司的ZuluFX。
  • LibericaFX,来自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。自版本8以来,Java和JavaFX都在飞速发展。

首先研究珠宝商的回答,通过JavaFX和OpenJFX的不同版本讨论技术变化。然后仔细阅读两个产品系列的所有发行说明,为您的应用程序保留任何潜在问题的记录。那就试试吧。尝试转换,看看会出现什么问题。试着修理它们。如果你最终成功了,你就会为未来做好准备。

资源

您可能需要阅读这些白皮书:

票数 8
EN

Stack Overflow用户

发布于 2021-09-09 23:07:40

背景

这一信息是对Basil出色回答的补充,Basil已经全面涵盖了关于这一主题的大部分相关信息。

这个问题是关于JavaFX 8的,它现在已经过时了。这里的特征差异信息是为了历史目的而提供的。

强烈建议任何现有项目从JavaFX 8迁移到最近的JavaFX版本,并且任何新项目都使用基于openjfx源代码的最新JavaFX版本(例如JavaFX 17+)。

什么是Oracle 8和JavaFX 8在OpenJDK中是什么?

Oracle 8是JDK和JRE的一个发行版,其中包括JavaFX 8的一个实现。

JavaFX 8是开源的,是OpenJDK项目的一部分。您可以从JavaFX的OpenJDK项目中找到指向在openjdk github站点上 8源的链接(外部链接可能在将来的某一天消失或死亡)。

Oracle JDK 8很大程度上是由这些开源组件构建的,加上下面概述的几个封闭源代码组件。

只使用开放源代码(减去下面概述的封闭源代码中的特性)就可以构建包含OpenJDK 8的完整版本的JavaFX 8。

然而,许多基于OpenJDK 8的发行版(例如那些作为JDK和JRE实现提供给普通Linux发行版的发行版)并不包括OpenJDK项目的JavaFX实现部分。

此外,来自IBM等供应商的第三方JDK发行版也不包括JavaFX实现。

因此,对于JavaFX 8开发,使用的主要发行版是Oracle /JRE 8,而不是只包含JavaFX 8的OpenJDK实现的发行版。

Oracle JDK 8和OpenJDK 8源代码实现/特性差异

该信息基于以下信息:

我再也找不到官方来源的链接来描述这些差异。

Oracle 8实现了OpenJDK 8开源实现中不可用的一些特性。与JavaFX相关的组件:

  1. 谷歌拥有的ON2 VP6视频编解码器没有开源(我上次查看时)。
  • 这意味着开放版本的JavaFX不能播放VP6 FLV文件。这并不是一个很大的损失,因为很难找到VP6编码器或以VP6编码的媒体。
  • 其他更常见的视频格式,如H.264,可以在开放版本的JavaFX中播放(只要您在目标计算机上预先安装了适当的编解码器)。
  1. Oracle WebStart/Browser嵌入式应用程序部署技术。
  • WebStart/Browser嵌入式部署技术的缺乏实际上与OpenJDK本身有关,而不是JavaFX本身。该技术可用于部署非JavaFX应用程序。
  1. 我认为有些版本的Oracle 8和OpenJDK JavaFX实现是随不同的2D渲染器附带的。
  • Oracle附带了一个封闭源代码呈现器实现,而OpenJDK附带了一个不同的开源呈现器。
  • 这是一个内部实现细节,我不认为在实现之间有任何功能特性的差异。
  1. 可能还有一些我不知道的细微差别。

对于大多数用户来说,除了缺乏WebStart/Applet支持之外,这两个版本之间的功能/功能差异并不重要。

Oracle实现的许可模型存在差异,其中包括纯从JavaFX项目源代码构建的OpenJDK和OpenJDK版本。如果这些许可的不同细节对你很重要,我鼓励你对这个主题做你自己的研究。

JavaFX 9& 10

在Java9、VP6编码已不再适用于JavaFXOracle /Browser嵌入式应用程序部署技术也受到了反对。中。

因此,虽然该功能包含在Oracle的这些版本中,而不是OpenJFX源代码中,但该技术已经标记为以后要删除(如果不是更早的话,JDK/JRE/JavaFX11版本也会这样做)。

JavaFX 11+

对于JavaFX 11+,上面关于特性差异的信息完全不相关,因为JavaFX 11+的下载页面声明:

从JDK 11开始,javafx.*模块不再作为JDK的一部分包括在内。现在,它们作为一个独立的、未打包的OpenJFX版本单独分发。它们可以作为maven工件用于Maven/Gradle,也可以作为独立的SDK使用,其中包含用于jlinkjlink文件。

因此,没有甲骨文专用版本的JavaFX for 11+ (据我所知),对于这些版本,只有开放源代码openjfx项目(或其他基于单一openjfx源代码创建其打包的发行版)提供的模块。

有关JavaFX 11+的详细信息,请参阅openjfx.io框架用户站点内部openjfx开发人员站点

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69111336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档