89

在我目前的工作中从事 dockerization 项目时,我有一个疑问:我可以使用哪个 Java?

这种怀疑是由于:

java下载警报

因此,经过一些研究,我得到了以下结论:

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

问题

根据我的结论:

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

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


参考

4

5 回答 5

69

2021-09 更新

在我的第一次阅读中,这个新许可证似乎使生产使用免费(以及开发、测试和培训使用),但捆绑 Oracle JDK 产品时收费出售的产品除外。但我不是律师,因此请自行阅读条款并根据需要咨询法律意见。

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

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


多家供应商提供 Java 实现选择

Speakjava的答案是正确且内容丰富的。

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

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

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

选择 Java 供应商的动机

于 2019-10-06T18:22:37.440 回答
45

在 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(它没有追溯更改)。正如你所说,您也可以免费使用 JDK 8 更新 OBCL 下的 202。
  5. 有几个选项可以继续使用免费更新的 JDK 8。其中之一是来自 Azul 的 Zulu 社区(我为之工作)。这是一个免费的、经过 TCK 测试的二进制文件,具有一些额外的反向移植功能(TLS 1.3 和 Java Flight Recorder)。由于这通过了 TCK,从功能的角度来看,它与 Oracle JDK 相同。除非您使用 Applet 或 Web Start,否则您的应用程序将以与 Oracle JDK 相同的方式工作。
  6. 如果您想迁移到 JDK 11(当前的长期支持版本,由 Oracle 定义,但所有其他 JDK 提供商都遵循),那么您将需要选择一个免费发行版(如 Zulu 社区)。

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

于 2019-10-06T13:48:34.487 回答
39

许可 OTN 与 BCL

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

BCL = Oracle 二进制代码许可证

  • 你可以使用它,但你不能修改它
  • 如果出现任何问题,您同意不起诉 Oracle
  • 您可以重新分发/发布它(以便您可以销售嵌入 Java 的产品),但如果这样做,您同意赔偿 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 相对,免费,仅用于在您的笔记本电脑中进行开发。对于企业,你必须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

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

免费且安全:OpenJDK 8

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

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

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

压缩模式

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

按照这个使用 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)

祖鲁社区下载:

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

免费和开源

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

  • 采用OpenJDK
  • 亚马逊 Corretto
  • 阿祖尔祖鲁
  • Bck2Brwsr
  • 可可
  • 代号一
  • DoppioJVM
  • Eclipse OpenJ9
  • GraalVM CE
  • 俳句VM
  • 热点
  • 雅米加
  • 虚拟机
  • 杰拉丁JVM
  • Jikes RVM(Jikes 研究虚拟机)
  • JVM.go
  • 乐约斯
  • 玛克辛
  • 多操作系统引擎
  • 绳索VM
  • 虚拟机

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

专有实现

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

  • Azul Zing JVM
  • 中东欧-J
  • Excelsior JET(停产
  • GraalVM EE
  • Imsys AB
  • 牙买加VM (aicas)
  • JBlend (Aplix)
  • MicroJvm (IS2T – 工业智能软件技术)
  • 虚拟机
  • PTC Perc
  • SAP 虚拟机
  • Waratek CloudVM for Java

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

Oracle Java 9 和 10:已弃用

Oracle Java 9 和 10 已终止支持。


更多参考资料

于 2020-06-02T16:45:10.307 回答
3

启动 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 版本,用于后续更新。非 LTS 版本(如 JDK 18)将在NFTC下的整个计划的六个月支持寿命中可用。

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

于 2021-09-15T13:45:15.240 回答
0

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

Java 17 LTS 是 Java SE 平台的最新长期支持版本。根据 Oracle 免费条款和条件许可,JDK 17 二进制文件可在生产环境中免费使用,并可免费重新分发。

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

于 2021-09-16T01:48:48.793 回答