Azul OpenJDK、Zulu OpenJDK和OpenJDK之间有什么区别?

110

Azul OpenJDK、Zulu OpenJDK和OpenJDK有什么区别?

2个回答

172

2021-09 更新

  • 对于版本 8 至 16,如果在生产环境中使用他们自己的 Oracle JDK 产品,Oracle 将收取费用,但对于开发、测试和培训用途则不收费。
  • 对于 Java 17,Oracle JDK 产品在新的 无费条款和条件 许可下可用,详情请参阅 Oracle 公司博客中的相关讨论

根据我的初步阅读,这个新许可证使得生产使用免费(以及开发、测试和培训用途),但对于在捆绑 Oracle JDK 产品的同时销售的产品则除外。但我不是律师,所以请您自行阅读条款,并在需要时咨询法律意见。

请记住,许多其他供应商继续提供Java规范的实现,如下面的流程图所示。其中一些供应商销售支持计划,可以选择性地或作为使用其产品的要求。永远不要假设,始终阅读您获取的任何发行版的详细要求。
2021年的另一个更新:将Microsoft添加到下面的供应商列表中。

Java规范与实现

Java由Oracle发布的一系列规范、JSR和JEP定义。

这些规范在OpenJDK项目的源代码中得到实现。

多家供应商提供该源代码的构建版本。有些供应商对这些构建版本收费,而有些则不收费。

Azul Systems是其中一个供应商,提供多个实现。Zulu Community是其中一个,免费提供。Zulu Enterprise是他们的另一个产品,商业提供。Zing是他们的另一个产品,用于特殊需求的JVM/JDK。
其他JDK产品供应商包括SAP、亚马逊、微软、甲骨文、BellSoft、Adoptium、红帽、IBM、Linux的“apt get”、FreeBSD的“Ports and Packages”等等。
你问道:

Azul OpenJDK、Zulu OpenJDK和OpenJDK之间有什么实际区别吗?

有也有,没有也没有。
首先,OpenJDK只提供源代码。所以你不能使用OpenJDK来运行Java应用程序。你必须先自己构建OpenJDK的源代码,以获取适用于你特定主机平台的可执行文件,或者你必须依赖供应商为你构建一个版本。如下面的流程图所示,有几个这样的供应商正在构建OpenJDK的源代码。
至于Azul Systems的产品,我不知道有所谓的Azul OpenJDK或Zulu OpenJDK。Azul提供多个产品,如上所述,但没有这个名称的产品。
Zulu这个名称用于3个产品,即上面提到的Community和Enterprise版本,以及用于在受限硬件资源上运行的Zulu Embedded。正如他们的网站上解释的那样,这三个产品都是基于OpenJDK的源代码构建的。
所以,基本上没有实际的区别,因为它们都是OpenJDK的构建版本,并且与OpenJDK源代码的大多数其他构建类似。符合Java规范的任何桌面、服务器或控制台应用程序都可以在Zulu Community和Zulu Enterprise上运行。
但是,是的,确实存在一些差异,因为Azul在其Zulu产品的Java 8版本中添加了一些功能,例如将Flight Recorder和Mission Control回溯到旧版本。而且,像任何JDK提供商一样,Azul有权在OpenJDK代码库中发布补丁以修复关键错误或安全漏洞,而无需等待发布。
另外,与Azul的Zing产品相比,确实存在重大差异,因为它旨在满足支持非常大内存的特殊需求。虽然我推测该产品使用了OpenJDK的部分,但Zing的性能与满足这些特殊需求的方式完全不同,同时仍符合Java规范,可以运行任何用Java编写的应用程序。
另一个实际的区别是,您可以从Azul Systems获得其构建版本的支持服务。几家供应商为其构建版本提供支持服务。OpenJDK仅提供源代码,不提供支持。
最后,我应该提到Azul Systems是Adoptium(以前称为AdoptOpenJDK)的赞助商之一,这是一个在Eclipse Foundation进行的项目。Adoptium提供了(a)OpenJDK的构建版本,以及(b)用于质量保证的测试套件
如果您有特定的产品问题,您应该查阅Azul.com网站,并联系Azul Systems的销售部门。在这里,我只代表我自己,与该公司无关。我偶尔使用过他们的Zulu Community产品,但没有使用其他产品。
➥ 阅读Java仍然是免费的以了解Oracle、OpenJDK以及各种Java实现的生态系统。
这是我制作的一个流程图,旨在帮助您选择一个适合实施Java 11的供应商。

Flowchart guiding you in choosing a vendor for a Java 11 implementation


2
Oracle不会发布JSRs或JEPs。Java规范请求由Java社区流程(JCP)发布。JDK增强提案在OpenJDK项目上发布。任何在OpenJDK上具有提交者身份的人都可以提交JEP。 - Speakjava
1
@Speakjava 在每个JSR页面和每个JEP页面的底部,您都会找到Oracle Corporation的版权声明。 - Basil Bourque
1
@skomisa,我增加了更多的讨论来解决这个问题。感谢您的批评。 - Basil Bourque
2
我的措辞较差,因为它旨在作为反馈而不是批评。(我对你的回答中的细节水平感到惊讶。) - skomisa

46
让我们首先进行充分的披露,我在 Azul 工作(这使我有资格回答这个问题)。
OpenJDK 是一个“...用于协作开发 Java 平台标准版及相关项目的开源实现场所”。主要托管自 JDK 6 以来的 Java 版本的源代码存储库。Sun 在 2007 年开源了他们的 JDK 7 实现,这就是 OpenJDK 的起源。随后,创建了一个 JDK 6 的项目(奇怪的是,它是基于 JDK 7 的)。从那时起,每个版本都是通过 OpenJDK 开发的。
Azul 是一家专门从事 Java 和 JVM 产品的公司。
Zulu 是 Azul 提供的 OpenJDK 二进制发行版所选择的名称。有三个版本:
1. Zulu Community:在 GPLv2 许可证和类路径例外(CPE)许可协议下提供的免费分发。 2. Zulu Enterprise:商业支持的二进制分发版,具有 SLA,保证 Oracle 提供更新的速度,每个更新版本有两个版本(CPU 和 PSU),并提供电话/电子邮件错误报告/解决方案。 3. Zulu Embedded:针对特定芯片组和嵌入式应用程序硬件配置的移植和支持。也是一种商业产品,尽管 Zulu Community 可以获得免费的 ARM 32 位构建版本。
总之,OpenJDK 是源代码,Azul 是公司,Zulu 是从 OpenJDK 构建的二进制发行版。

Zulu Embedded 可以用于 Android 系统吗? - Kunkun Liu
很遗憾,Android 没有 Zulu 嵌入式。 - Speakjava
@Speakjava:那么Azul Zulu Prime builds of OpenJDK是什么?根据其功能集,它似乎与Azul Platform Prime(以前称为Azul Zing)相同,尽管根据其名称,它声称是一个“从OpenJDK构建的二进制分发”,正如您在评论中所说的那样? - Volker Simonis
@VolkerSimonis,最简单的解释是Zulu是我们基于OpenJDK的JDK发行版的名称。Zulu Community/Core是我们的OpenJDK构建(没有功能修改)。Zulu Prime(曾经是Zing)是一个基于OpenJDK构建的JDK,但具有功能性变化(GC和JIT编译器)。从JDK 8开始,我们所有的构建都通过了TCK,因此完全符合相关的Java SE标准。简短的答案是这是一个品牌变化。 - Speakjava
@Speakjava,感谢您的回答。那么,如果“Zulu Prime”是基于并构建于OpenJDK之上,而OpenJDK受GPLv2加CPE许可证保护,那么“Zulu Prime”及其所有功能性更改(如GC和JIT编译器)必须在完全相同的许可证下提供(即GPLv2加CPE许可证),我的理解正确吗? - Volker Simonis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接