我大致了解了Oracle JDK
和Open JDK
之间的区别。
但我找不到使用Open JDK
的原因。
因为Oracle JDK
已经拥有一个人需要的一切,并且有时比Open JDK
更快。
在什么情况下应该使用Open JDK
?
只是出于法律问题吗?
如果是,那么问题是什么?
因为我一直使用Oracle JDK
开发我的所有项目。
我大致了解了Oracle JDK
和Open JDK
之间的区别。
但我找不到使用Open JDK
的原因。
因为Oracle JDK
已经拥有一个人需要的一切,并且有时比Open JDK
更快。
在什么情况下应该使用Open JDK
?
只是出于法律问题吗?
如果是,那么问题是什么?
因为我一直使用Oracle JDK
开发我的所有项目。
其他答案都是正确的。以下是一些其他信息,包括2021年初的重要更改。
了解Oracle JDK和OpenJDK之间的区别。
总的来说:源代码与二进制文件/安装程序。
实际上,Oracle提供了两种产品:
Oracle已经宣布他们的商业产品Oracle JDK将保持与OpenJDK相同的功能。Oracle甚至开源并无偿提供了他们曾经的商业工具Mission Control和Flight Recorder,现在都是OpenJDK的一部分。因此,几乎没有实际区别。一个重要的区别是,Oracle公司有权为他们的付费支持客户快速提供OpenJDK中目前没有的紧急补丁。同样适用于其他销售支持服务的供应商。
[值得注意的是,Oracle还提供了另一种Java实现GraalVM,这是一种非常专业化的产品。]
这是我制作的流程图,以帮助您选择Java实现的提供商。
以下是选择发行版时可以考虑的动机列表。
2017年11月: 当时提出这个问题时,选择OpenJDK和Oracle JDK的原因包括:
针对特定平台的构建/安装程序的可用性。例如,上次我检查时,在Debian / Ubuntu中没有“.deb”格式的Oracle JDK发行版,也没有Windows上的OpenJDK构建。
Oracle JDK具有一些商业功能,可以由支付费用的人启用。它们在OpenJDK上不存在。
Oracle JDK有一个让人恼火的点击许可证。如果你尝试自动化部署,例如到云VM,则会很痛苦。相比之下,至少在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 JDK Java 11及以上版本需要来自Oracle的支持合同或订阅。OpenJDK Java构建不需要此要求。
Oracle不提供对OpenJDK Java构建的支持,但第三方可以提供支持。第三方还会将Oracle的安全修复程序移植到OpenJDK构建中。
进一步阅读:
1 EOL代表终止生命周期。 终止生命周期(EOL)产品是指不再获得继续支持的产品,原因是由于现有的市场营销、支持和其他流程被终止,或者已经到了其有用寿命的末期。
OpenJDK与发行版更新过程紧密集成。例如,在Fedora上,这意味着您只需运行以下命令:
dnf update
不激活第三方存储库,您将获得最新的OpenJDK版本以及所有相关修复。
在这个特定的发行版上,分发商对OpenJDK进行了测试。Oracle有不同的参考平台用于测试OpenJDK。在Fedora的情况下,使用Java编写的软件与由发行版提供的OpenJDK版本一起进行测试,而该软件与Oracle JDK的组合接受的测试要少得多。
Oracle还捆绑了他们的Java下载与其他软件,如浏览器工具栏、性能测量和监控工具。