Java 的哪个免费版本可以用于生产环境和/或商业用途?

Which free version of Java can I use for production environments and or commercial purposes?

当我在目前的工作中做一个docker化项目时,我有一个疑问:我可以使用哪个Java?

这个疑惑是因为:

所以经过一些研究我得到了这些结论:


问题

根据我的结论:


参考资料

在 JDK 9.

发布的同时,Oracle 对 Java 平台的开发、分发和更新方式进行了多项重大更改。

回答您问题的关键事实是:

  1. Oracle 在 Java 中使用 Oracle 二进制代码许可证 (OBCL)。这有使用领域限制(您需要嵌入式使用的商业许可证)但允许免费使用 Oracle JDK 进行通用开发和部署。
  2. 自 JDK11 起,许可更改为 Oracle 技术网许可协议 (OTNLA),它要求您购买 Java SE 订阅以用于商业生产。自 4 月以来,此许可证也已应用于 JDK 8 的更新(更新 211/212)。
  3. 从 JDK 11 开始,Oracle 消除了 Oracle JDK 和完全从 OpenJDK 源代码构建的二进制文件之间的所有功能差异。 Oracle JDK 11 中不再重要的东西是浏览器插件、Java Web Start 和 JavaFX。
  4. 您可以继续在生产环境中使用 JDK 7(及更早版本)的任何 public Oracle 二进制文件,而无需 Java SE 订阅,因为许可证仍然是OBCL(它没有追溯改变)。也可以像你说的那样,用JDK8 up to update 202 obcl下免费。
  5. 有多种选择可以继续使用 JDK 8 免费更新。其中之一是来自 Azul(我为之工作)的 Zulu Community。这是一个免费的、经过 TCK 测试的二进制文件,具有一些额外的反向移植功能(TLS 1.3 和 Java Flight Recorder)。由于这通过了 TCK,从功能的角度来看,它与 Oracle JDK 相同。除非您使用 Applets 或 Web Start,否则您的应用程序将以与 Oracle JDK.
  6. 相同的方式工作
  7. 如果您想移动到 JDK 11(当前的长期支持版本,由 Oracle 定义,但随后是所有其他 JDK 提供商),那么您需要选择一个免费发行版(如祖鲁社区)。

强烈建议确保您的 JDK 是最新的并且包含所有相关的安全补丁。继续使用旧版本可能会使您面临严重的安全漏洞。

更新 2021-09

根据我的初读,这个新许可证似乎使生产使用免费(连同开发、测试和培训使用),除了捆绑销售的收费产品外Oracle JDK 产品。但我不是律师,所以请自行阅读条款并根据需要咨询法律建议。

请记住,许多其他供应商继续提供 Java 规范的实现,如下面的流程图所示。其中一些供应商出售支持计划,可以选择或作为使用其产品的要求。不要假设,请始终阅读您获得的任何发行版的详细要求。

2021 年的另一项更新:将 Microsoft 添加到下面的供应商列表中。


一些供应商提供了 Java 实施选择

是正确的,内容丰富。

此外,这是我制作的流程图,用于指导您为 Java 实施选择供应商。

或者另一种看待这个问题的方式:您的特定动机或情况。

OTN 与 BCL 的许可

Oracle JDK 8(又名 1.8)不再使用 BCL(二进制代码许可证)。 2019年4月16日起,OracleJDK8使用OTN(甲骨文技术网)许可,需要您创建Oracle账户才能下载JDK8并付款!!

BCL = Oracle 二进制代码许可证

  • 可以使用,但不能修改
  • 您同意在出现任何问题时不起诉 Oracle
  • 您可以redistribute/publish它(这样您就可以销售带有Java嵌入的产品),但如果您这样做,您同意赔偿Oracle;所以如果有人起诉你,你不能把Oracle拖进去。

它真的只是为了保护 Oracle 的知识分子 属性 并保护他们在发现错误时不被起诉。

来源:https://www.quora.com/In-short-what-does-the-Oracle-Binary-Code-License-Agreement-for-Java-SE-actually-say-or-prohibit/answer/Jon-Harley

总结:免费,有风险,Oracle 没有任何过错

OTN = Oracle 技术网许可

总结:与 BCL 相反,免费,仅用于在您的笔记本电脑上进行开发。对于企业,必须PAY

免费,但有风险:Java 1.4、5、6 和 7

Oracle 不显示任何与 Java 1.4、5、6 和 7 下载的许可证更改相关的消息。所以我们可以将它们用于开发和生产部署,接受问题和安全问题。

7之前的旧版本,没有也不会有任何更新。如果您的旧系统 运行 超过此 java 旧版本,也许销售联系人可能是一个解决方案。

免费但有风险:Java 8 更新 202

只是 Java SE 8 JDK 8u202 和更早的版本 免费用于开发和生产部署 。您可以从以下网址下载:

不再免费但安全:Java 8 更新 221

自 java 8 更新于 2019 年 4 月 16 日 8u221,所有版本和更新 (java 8,9,10,11, 14) 没有成本 只是 用于 个人使用和开发目的 。任何其他用途,需要商业许可

免费且安全:打开JDK 8

AdoptOpenJDK 使用基础架构、构建和测试脚本从 OpenJDK™ class 库中生成预构建的二进制文件,并可选择 OpenJDK 或 Eclipse OpenJ9 虚拟机。

所有 AdoptOpenJDK 二进制文件和脚本均已获得开源许可并免费提供。

OpenJDK 是 ORACLE 的一项举措。此处有更多详细信息:https://adoptopenjdk.net/

压缩模式

您可以从 here 下载最新的 v8 版本。最新版本:

Follow to download using curl

安装模式

apt-get install openjdk-8-jre (just run apps)
apt-get install openjdk-8-jdk (develop and run)

来自https://openjdk.java.net/install/

免费且安全:祖鲁社区(Java 6,7,8,11,13,14,15)

祖鲁社区下载:

免费且安全:打开JDK (Java 8,9,10,11,12,13,14)

免费和开源

以下按字母顺序列出的实现是开源的,可以免费使用:

  • 采纳打开JDK
  • 亚马逊 Corretto
  • 蔚蓝祖鲁
  • Bck2Brwsr
  • 可可
  • 代号一
  • DoppioJVM
  • Eclipse OpenJ9
  • GraalVM CE
  • HaikuVM
  • 热点
  • 贾米加
  • JamVM
  • Jelatine JVM
  • Jikes RVM(Jikes 研究虚拟机)
  • JVM.go
  • leJOS
  • 马克辛
  • 多OS引擎
  • RopeVM
  • uJVM

来源:https://www.baeldung.com/oracle-jdk-vs-openjdk

专有实现

还有其他私有或商业实现:

  • Azul Zing JVM
  • CEE-J
  • 怡东 JET (Discontinued)
  • GraalVM EE
  • Imsys AB
  • 牙买加 VM (aicas)
  • JBlend (Aplix)
  • MicroJvm(IS2T – 工业智能软件技术)
  • OJVM
  • PTC 全氯乙烯
  • SAP JVM
  • 用于 Java
  • 的 Waratek CloudVM

来源:https://www.baeldung.com/oracle-jdk-vs-openjdk

Oracle Java 9 和 10:已弃用

Oracle Java 9 和 10 已停止支持。


更多参考资料

开始 JDK 17(2021 年 9 月)

Oracle JDK 17 及更高版本在 free-to-use license 下提供,持续到后续 LTS 版本发布后一年。在那之后,Oracle JDK 将获得 OTN 许可。

这是一个相关的 FAQs 页面,其中解释了更多内容,但这里是从该页面中提取的摘要:

"Oracle 将在 JDK 17 及更高版本中使用 NTFC。LTS 版本,例如 JDK 17,将在该许可证下的一年内收到更新后续LTS的发布。在免费使用许可期后,Oracle打算使用OTN License, the same currently used for Java 8 and 11 LTS releases, for subsequent updates. Non-LTS releases such JDK 18 will be available for their entire planned six months support life under the NFTC."

来源:https://blogs.oracle.com/java/post/free-java-license

现在,您可以使用JDK/Java 17,在JDK/java7下载页面(https://www.oracle.com/java/technologies/downloads/),您可以得到这样的评论:

Java 17 LTS 是 Java SE 平台的最新长期支持版本。 JDK 17 个二进制文件可在 Oracle 免费条款和条件许可下免费用于生产和免费重新分发

JDK 17 将根据这些条款收到更新,至少到 2024 年 9 月。