使用 OpenJDK 的原因是什么?

What is the reason to use OpenJDK?

我有点理解 Oracle JDKOpen JDK 之间的区别。
但是我找不到使用 Open JDK.
的理由 因为 Oracle JDK 已经拥有了人们需要的一切,而且有时比 Open JDK 更快。

在什么情况下应该使用 Open JDK
仅仅是为了合法性问题吗?
如果是,那么问题是什么?
那是因为我一直在使用 Oracle JDK

开发我所有的项目

OpenJDK 与分发更新过程紧密集成。例如,在 Fedora 上,这意味着您可以 运行

dnf update

无需激活第三方存储库,您将获得包含所有相关修复的最新 OpenJDK 版本。

OpenJDK 由分发供应商在此特定分发上进行测试。 Oracle 有不同的参考平台来测试 OpenJDK。对于 Fedora,用 Java 编写的软件使用发行版提供的 OpenJDK 版本进行测试,而该软件与 Oracle JDK 的组合接受的测试要少得多。

Oracle 还将其 Java 下载与浏览器工具栏、性能测量和监控工具等其他软件捆绑在一起。

2017年11月: 问这个问题的时候,选择OpenJDK和Oracle的原因JDK 包括:

  • 特定平台的构建/安装程序的可用性。例如,上次我检查没有用于 Debian / Ubuntu 的“.deb”格式的 Oracle JDK 发行版。 Windows.

    没有 OpenJDK 构建
  • Oracle JDK 有一些商业功能,付费的人可以启用。它们不在 OpenJDK.

  • Oracle JDK 有一个烦人的点击许可。如果您尝试自动化部署,这会很痛苦;例如到云虚拟机。相比之下,Linux 上的 OpenJDK(至少)可以使用平台的包管理器进行安装和更新。

  • 如果您需要 OpenJDK 的商业支持,可能会出现问题。

Oracle JDK 和 OpenJDK 之间 没有实质性 许可差异,如果您只是打算使用该软件。 (Oracle JDK 的二进制再分发有一些限制,但它们是关于运送 Java 平台的非标准或精简版本。)

根据此博客页面,将来,其中一些差异将会消失:


2018年12月更新:

  • 截至 2019 年 1 月,Oracle JDK Java 8 将停产用于商业用途。 (但免费支持将持续到 2020 年 1 月供个人使用。) 1

  • Java 9 和 Java 10 已停产。

  • Oracle 的商业用途JDKJava11 及更高版本需要支持合同或来自 Oracle 的订阅。 OpenJDK Java 版本没有这个要求。

  • Oracle 不提供对 OpenJDK Java 构建的支持,但可从第 3 方获得支持。第三方还将 Oracle 安全修复程序移植到 OpenJDK 版本。

进一步阅读:


1 EOL 代表生命周期结束。 An end-of-life (EOL) product is a product that does not receive continuing support,要么是因为现有的营销、支持和其他流程已终止,要么是使用寿命结束。

对于那些在 2019 年阅读本文的人。

Java SE 8 is the last Java SE release targeting Desktop deployment (eg, Java Web Start and a stand-alone system JRE). Java SE 8 will be end of public updates in January 2019, after which commercial users need to either transition to other technologies, or purchase a Java SE Subscription.

因此,使用 OpenJDK 的另一个原因(除了 Stephen C 之外):它对所有用途都是免费的。

其他答案正确。这里还有一些其他信息,包括截至 2021 年初的重大变化。

源代码与 Binaries/installers

understand the differences between Oracle JDK and Open JDK.

总结一下:源代码 对比 binaries/installers.

  • OpenJDK is an open-source project, implementing the Java Specifications, JSRs, and JEPs that define the Java platform。此项目发布 仅源代码 ,不发布二进制文件或安装程序以在您的计算机上获得 Java 运行(一些早期访问版本除外)。 Oracle 是 OpenJDK 项目的主要参与者,此外还有 IBM 和 Red Hat、Apple、SAP、Azul Systems、Microsoft 等。
  • 许多公司提供用于安装的 OpenJDK 发行版,如 二进制文件或安装程序 。甲骨文就是这样的公司之一。

Oracle实际上提供了两个这样的产品:

  • Oracle JDK
    商业产品,有付费支持计划。 (仅对开发和测试免费,对部署免费。阅读他们的条款。)
  • jdk.java.net
    OpenJDK源代码的构建,免费提供,不受支持。

Oracle 已宣布他们打算保持其商业产品 Oracle JDK 与 OpenJDK 的功能相同。甲骨文甚至开源并免费提供他们以前的商业工具 Mission ControlFlight Recorder,现在两者都是一部分打开JDK。所以几乎没有实际区别。一个显着差异是 Oracle 公司保留向其付费支持客户群快速提供 OpenJDK 当前未找到的紧急补丁的权利。其他销售支持的供应商也是如此。

[郑重声明,Oracle 提供了 Java、GraalVM 的第三种实现,这是一个非常专业的产品。]

这是我制作的流程图,可帮助指导您选择 Java 实施的提供商。

这里列出了您在选择发行版时可能会考虑的动机。