我可以将哪个免费版本的 java 用于生产环境和/或商业目的?

JRi*_*dsz 57 java open-source azul-zulu corretto

当我在目前的工作中参与 dockerization 项目时,我有一个疑问:我可以使用哪种 java?

这种怀疑是由于:

java下载提示

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

  • 2019 年 4 月 16 日 8u221的 java 8 更新以来,(java 8,9,10,11 y 13) 的所有版本和更新都没有成本,用于个人使用和开发目的。任何其他用途,需要商业许可证
  • 7 之前的旧版本没有也不会有任何更新。如果旧系统支持需要更新这些版本,那么销售联系人可能是一个解决方案。
  • 如果我想将 java 8 oracle 版本用于商业目的免费,我需要使用2019 年 4 月 16 日 8u221 更新的先前版本

问题

根据我的结论:

  • 如果我的开发严格需要或使用JDK 8开发,我是否可以仅将 Oracle Java SE 8 JDK 8u202 及更早版本用于免费商业目的接受问题和安全问题?

  • 如果我可以改变我的开发并且我仍然想要免费并且我想要改进和安全更新,我必须使用这些 Java 开放实现之一吗?


参考

Bas*_*que 40

Speakjava答案是正确且信息丰富的。

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

指导您为 Java 11 实现选择供应商的流程图

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

选择 Java 供应商的动机

  • @Yar 不,不正确。更仔细地阅读流程图。蓝色桶右侧的产品是免费的。蓝色桶左侧的产品的条款各不相同,可能有限制,并且可能需要也可能不需要费用。例如:我相信 Azul Systems 的 Zulu 产品的开发和部署都需要付费,但 Zing 产品不需要付费(顺便说一句,其名称最近已更改)。重要提示:最后,您必须亲自调查产品的许可条款,而不是相信互联网上某些使用流程图绘制工具的傻瓜。 (3认同)
  • @JoachimSauer 是的,确实如此。因此,在答案前面添加了更新。谢谢。 (2认同)

Spe*_*ava 37

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

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

  1. Oracle 使用的是适用于 Java 的 Oracle 二进制代码许可证 (OBCL)。这具有使用领域的限制(您需要一个商业许可证才能用于嵌入式用途),但允许免费使用 Oracle JDK 进行通用开发和部署。
  2. 从 JDK 11 开始,许可证更改为 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(及更早版本)的任何公共 Oracle 二进制文件,而无需订阅 Java SE,因为许可证仍然是 OBCL(它没有追溯更改)。你也可以,如你所说,在 OBCL 下免费使用 JDK 8 更新 202。
  5. 有多种选择可以继续免费使用 JDK 8 和更新。其中之一是来自 Azul 的 Zulu Community(我为之工作)。这是一个免费的、经过 TCK 测试的二进制文件,具有一些额外的向后移植功能(TLS 1.3 和 Java Flight Recorder)。由于这通过了 TCK,从功能角度来看,它与 Oracle JDK 相同。除非您使用 Applet 或 Web Start,否则您的应用程序的工作方式将与 Oracle JDK 相同。
  6. 如果您想迁移到 JDK 11(当前的长期支持版本,由 Oracle 定义,但所有其他 JDK 提供商紧随其后),那么您需要选择其中一个免费发行版(如 Zulu Community)。

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

  • 抱歉我的延迟。总结一下,我们可以说: #1 从 2019 年 4 月 16 日 8u221 更新开始,oracle 提供的 jdk 需要**付款** #2 如果我们需要免费 4 永远和免费更新,oracle jdk 不是一个选择,只是open-jdk、zulu、azul、Corretto 是解决方案吗? (2认同)
  • @JRichardsz 澄清一下:Oracle 提供了**两个** Java 实现:(A) *Oracle JDK* 是他们支持的产品。现在需要购买才能在生产中使用。根据非开源许可证提供。您可以在 https://www.oracle.com/technetwork/java/javase/downloads/index.html 找到它。(B) 其他产品未正式命名。它可以在 https://jdk.java.net/ 找到。该产品是免费的,并根据 GNU 通用公共许可证版本 2(带有类路径例外)发布。显然是 *OpenJDK* 源代码的直接构建。其他供应商也提供 Java。 (2认同)

JRi*_*dsz 30

许可 OTN 与 BCL

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

BCL = Oracle 二进制代码许可

  • 你可以使用它,但你不能修改它
  • 如果出现任何问题,您同意不起诉 Oracle
  • 您可以重新分发/发布它(以便您可以销售嵌入 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-哈雷

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

OTN = Oracle 技术网络许可

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

免费有风险:java 4,5,6 y 7

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

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

免费但有风险:java 8 update 202

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

不再免费但安全:java 8 update 221

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

免费且安全:打开 jdk 8

AdoptOpenJDK 使用基础架构、构建和测试脚本从 OpenJDK™ 类库以及 OpenJDK 或 Eclipse OpenJ9 VM 的选择中生成预构建的二进制文件。

所有 AdoptOpenJDK 二进制文件和脚本都是开源许可的,并且免费提供。

OpenJDK 是一个 ORACLE 计划。更多细节在这里:https : //adoptopenjdk.net/

压缩版

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

安装

apt-get install openjdk-8-jre (just run apps)
apt-get install openjdk-8-jdk (develop and run)
Run Code Online (Sandbox Code Playgroud)

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

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

祖鲁社区下载:

免费且安全:OpenJDK (java 8,9,10,11,12,13,14)

免费和开源

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

  • 采用OpenJDK
  • 亚马逊 Corretto
  • 祖鲁语
  • Bck2浏览器
  • 可可
  • 代号一
  • DoppioJVM
  • 日食 OpenJ9
  • GraalVM CE
  • 俳句虚拟机
  • 热点
  • 加米加
  • 虚拟机
  • Jelatin JVM
  • Jikes RVM(Jikes 研究虚拟机)
  • JVM.go
  • 莱乔斯
  • 马克辛
  • 多操作系统引擎
  • 绳状虚拟机
  • 虚拟机

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

专有实现

还有受版权保护的实现:

  • Azul Zing JVM
  • 中东欧-J
  • Excelsior JET(已停产
  • GraalVM EE
  • 艾姆斯公司
  • 牙买加VM (aicas)
  • JBlend (Aplix)
  • MicroJvm (IS2T – 工业智能软件技术)
  • 虚拟机
  • PTC全氯乙烯
  • 虚拟机
  • 适用于 Java 的 Waratek CloudVM

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

Oracle Java 9 y 10:已弃用

Oracle Java 9 y 10 已终止支持。


更多参考

  • 这是有史以来 Java 许可证的最佳答案。 (2认同)

man*_*uti 6

启动 JDK 17(2021 年 9 月)

Oracle JDK 17 及更高版本根据免费使用许可证提供,该许可证有效期直至后续 LTS 版本发布后一年。此后,Oracle JDK 将受 OTN 许可。

这是一个相关的常见问题解答页面,其中解释了更多信息,但以下是从该页面提取的摘要:

“Oracle 将为 JDK 17 及更高版本使用 NTFC。LTS 版本(例如 JDK 17)将在后续 LTS 发布后一年内根据该许可证接收更新。免费使用许可证期结束后,Oracle 打算使用OTN 许可证,与当前用于 Java 8 和 11 LTS 版本的后续更新相同。JDK 18 等非 LTS 版本将在NFTC规定的整个计划的六个月支持期内可用。”

资料来源:

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

https://www.oracle.com/uk/java/technologies/javase/jdk-faqs.html