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](https://istack.dev59.com/P4Gmt.webp)