背景信息
the Java Platform, Standard Edition (Java SE) 是标准
JDK 是 Java 开发工具包
JDK本质上是 针对 Java(SE)平台实现的产品。
Java 平台标准版开发工具包(JDK) 是一个开发环境,用于构建使用 Java 编程语言的应用程序,包含了用于开发、测试 Java 程序的工具,并支持这些程序在 Java 平台上运行。
Oracle强烈建议使用“JDK”这个术语来指代Java SE(标准版)开发工具包(另外还有企业版和微型版平台)。
OpenJDK 是 Java 平台标准版(Java SE)的免费开源实现,源于 Sun Microsystems 在 2006 年发起的 OpenJDK 项目,该项目将其 Java 实现开源。它为组织提供了一种替代方案,可以在未来多年内稳定和标准化其 Java 环境,几乎无需过渡工作或传统的许可管理麻烦。
多个公司提供了Java SE的Java开发工具包(JDK)实现,包括Oracle(提供Oracle JDK)、Azul(提供Zulu)、Amazon(提供Corretto)、Microsoft(提供其OpenJDK版本)以及Eclipse Adoptium(前身为AdoptOpenJDK),这些实现都基于开源的OpenJDK项目;因此,它们本质上是相同核心Java代码的不同发行版,可能在功能和支持级别上有所不同。
OpenJDK 和 Oracle JDK 之间的区别
Oracle JDK 和 OpenJDK 都是称为 Java 开发工具包(JDK) 的软件和规范集合。从 Java 11 开始,Oracle JDK 和 OpenJDK 在构建上是相同的,包含了像 Flight Recorder 和 Mission Control 等功能。因此,Oracle JDK 和 OpenJDK 之间几乎没有代码差异,因此它们在功能上非常相似。
OpenJDK 和 Oracle JDK 之间最大的区别在于:
- OpenJDK 是一个开源项目,由 Oracle、Red Hat 和社区共同维护。
- Oracle JDK 是封闭源代码,需要付费许可证,并且由 Oracle 维护。
由于这一差异,OpenJDK 有一些功能无法使用,因为某些功能是封闭源代码的,或者由于许可证限制而不可用。
为什么考虑迁移到 OpenJDK?
由于 OpenJDK 是一个开源开发工具包,因此它与 Oracle JDK 在支持和成本上存在差异。OpenJDK 作为 Oracle JDK 的开源替代品,具备以下一些优势:
- 成本:对于需要企业级支持的用户,Red Hat 提供的 OpenJDK 构建已包含在 Red Hat Enterprise Linux® (RHEL)、Red Hat OpenShift® 和 Red Hat Application Services 的订阅中,无需额外费用。
- 整合:通过标准化使用 OpenJDK,可以将 Java 支持整合到云环境中(包括应用服务器或运行时、JDK 和 Kubernetes),简化管理。
- 云原生现代化:作为云原生现代化过程的一部分,OpenJDK 提供持续的开发、性能改进、安全更新和部署灵活性,使其非常适合在应用服务器、容器或 Kubernetes 中运行。
选择哪个 JDK?
在 OpenJDK 和 Oracle JDK 之间,对于符合 Java SE 规范 的代码,两者在性能上没有区别。考虑到功能上的一些差异,最终的选择应由你决定,选择哪个 JDK 更具优势并继续进行迁移。
选择 JDK 时,需要考虑很多因素,从成本到对 Java 支持的需求都有影响。许多 Java 专家建议用户尽早迁移到 OpenJDK,并指出健康的迁移策略应该从彻底的库存和风险分析开始。大型组织还可能需要评估他们对支持和稳定性的需求。
另外一个考虑因素是你的技术栈是否基于 Linux。如果是的话,迁移到 OpenJDK 可以带来好处,因为 OpenJDK 是 Ubuntu、Fedora、RHEL 和 OpenSUSE 等 Linux 发行版的默认 Java 发行版。
评估 JDK 时还需谨慎:如果你正在从旧版本的 Oracle JDK(如 Java 8)迁移,且某个应用程序使用了内部和未指定的 API,它们可能不在 OpenJDK 的代码库中。
此外,随着 Oracle 最近的定价变化,你和你的组织可能会考虑迁移到 OpenJDK。
其他流行的JDK
-
AdoptOpenJDK(Adoptium)
-
Amazon Corretto