Contents

各种JDK的发行版

OracleJDK:

Oracle公司成立于1977年,是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。2009年就以7.4B$收购了Sun公司。2013年超越 IBM ,成为 继 Microsoft 后全球第二大软件公司。 警告:生产环境中OracleJDK的使用请注意法律风险! https://www.oracle.com/java/technologies/javase-downloads.html

⛔️ 建议:不要使用 Oracle 构建的 OpenJDK,尤其是在打算坚持使用 LTS 版本时。

OpenJDK:

OpenJDK原是Sun Microsystems公司为Java平台构建的Java开发环境(JDK)的开源版本,完全自由,开放源码。 Sun Microsystems公司在2006年的JavaOne大会上称将对Java开放源代码,于2009年4月15日正式发布OpenJDK。 甲骨文在2010年收购Sun Microsystem之后接管了这个项目。 http://openjdk.java.net

RedHatOpenJDK:

Red Hat 将为 OpenJDK 8、11、17和21发行版每年提供四次更新,间隔大约三个月。OpenJDK 的一个主要版本从 Red Hat 首次引入起,至少支持六年时间。如果底层 RHEL 平台的退役日期早于 OpenJDK 版本的退役日期,则 OpenJDK 版本可能失去对 RHEL 版本的支持。目前 RHEL 有三个主要的活动版本,但建议客户尽快迁移到最新版本的 OpenJDK,以继续获得更新和支持。 https://developers.redhat.com/products/openjdk/download

AdoptOpenJDK:

2017年开始采用OpenJDK.net,建立在多个平台上普遍缺乏一个开放的、可复制的OpenJDK源代码构建和测试系统。 AdoptOpenJDK为Java生态系统提供了坚如磐石的OpenJDK二进制文件,还为任何平台上的OpenJDK构建者提供了作为代码的基础设施和构建场。 https://adoptopenjdk.net

⛔️ 建议:不要再使用 AdoptOpenJDK。请改用 Adoptium Eclipse Temurin。

Adoptium Eclipse Temurin

Eclipse Adoptium 是 Eclipse基金会下的顶级项目,为开源软件提供资源和专业治理模型。Adoptium 工作组由对 Java 技术有战略兴趣的主要公司和组织组成,包括 Red Hat、 IBM、 Microsoft、 Azul 和 iJUG。以前的 AdoptOpenJDK 项目已经转移到了 EclipseAdoptium。 AdoptiumOpenJDK 构建被称为 EclipseTemurin,以区分项目和构建。 Eclipse Temurin 构建是高质量的,与供应商无关,并且在许可证下经过 TCK 测试。 Adoptium 声明,只要相应的上游源得到积极维护,它将继续为 LTS 版本构建二进制文件。 https://adoptium.net/zh-CN/temurin/releases/

Alibaba Dragonwell:

阿里巴巴 Dragonwell 作为 OpenJDK 的下游版本,是阿里巴巴内部的 OpenJDK 实现。它针对在 100,000+ 台服务器上运行的在线电子商务、金融和物流应用程序进行了优化。阿里巴巴 Dragonwell 是以极端扩展方式运行这些分布式 Java 应用程序的引擎。Dragonwell有两个版本:

  • 标准版:基于 OpenJDK 上游,并具有更多增强功能,包括错误修复、安全补丁、工具支持等。
  • 扩展版:标准版中的所有内容,以及:针对云优化并在阿里巴巴生产环境中广泛使用的额外定制/重要功能。 https://dragonwell-jdk.io/

https://github.com/dragonwell-project/dragonwell11/releases/

Oracle GraalVM:

GraalVM 会提前将 Java 应用程序编译为独立的二进制文件。 与在 Java 虚拟机 (JVM) 上运行的应用程序相比,这些二进制文件更小,启动速度提高了 100 倍,无需预热即可提供峰值性能,并且使用的内存和 CPU 更少。

GraalVM 可减少应用程序的攻击面。 它从应用程序二进制文件中排除未使用的类、方法和字段。 它将反射和其他动态 Java 语言功能限制为仅构建时。 它不会在运行时加载任何未知代码。

流行的微服务框架(如Spring Boot,Micronaut,Helidon和Quarkus)以及云平台(如Oracle Cloud Infrastructure,Amazon Web Services,Google Cloud Platform和Microsoft Azure)都支持GraalVM。

通过基于配置文件的优化和 G1(垃圾优先)垃圾回收器,与在 Java 虚拟机 (JVM) 上运行的应用程序相比,您可以获得更低的延迟和相当或更好的峰值性能和吞吐量。 https://www.graalvm.org

Zulu openJDK:

Azul Systems为需要为其面向网络的客 户(旅游、在线零售、游戏、SaaS)提供基于服务器的Java应 用程序的公司提供服务,满足实时业务系统(广告网络、资本市场、通信)的特定 延迟目标,确保对重要应用程序进行及时维护或安全更新,或者为嵌入式和物联网用例提 供基于Java的系统。 https://www.azul.com/downloads/?package=jdk#zulu

⚠️这些构建的缺点是依赖于单个公司,可能会突然更改其许可证或更新策略。

BellSoft Liberica:

与 Azul 类似,BellSoft 专注于专业的 Java 技术和 JDK 的商业支持。 此外,BellSoft 在行业内享有很高的声誉,并参与了各种工作组来发展 Java 平台。 BellSoft 为几乎所有操作系统和架构提供名为 Liberica JDK 的开源 OpenJDK 版本。 Liberica是一个100% 开源Java实现。它是由BellSoft贡献的OpenJDK构建的,经过了彻底的测试,并通过了OpenJDK许可下 提供的JCK。Standard为常规用途,full版本包含JavaFX,lite为精简的OpenJDK。文件体积Full > Standard > lite。 https://bell-sw.com/pages/downloads/

⚠️这些构建的缺点是依赖于单个公司,可能会突然更改其许可证或更新策略。

SapMachine:

SAP SE是一家 德国跨国软件公司,它生产企业软件 来管理业务运营和客户关系。SAP总部位于德国巴登-符腾 堡的沃尔多夫,在180个国家设有区域办事处。SapMachine是OpenJDK 项目的下游版本。它用于为希望使用OpenJDK运行其应用程序的SAP客户和合作伙 伴构建和维护支持SAP的OpenJDK版本。SAP致力于确保Java平台的持续成功。 https://sap.github.io/SapMachine ⚠️ 建议:仅当在 SAP 服务器上运行 Java 应用程序时,才使用 SapMachine。

Corretto:

Amazon Corretto是一个免费的 、多平台的、面向生产的开放Java开发工具包(OpenJDK) 发行版。Corretto提供长期支持,包括性能增强和安全修复。亚马逊在数 个生产服务上运行Corretto,并且Corretto被证明与Java SE标准兼容。使用Corretto,您 可以在流行的操作系统(包括Linux、Windows和macOS)上开发和运行Java应用程序。 https://amazonaws-china.com/cn/corretto

IBM Semeru

IBM Semeru Runtimes 使用 OpenJDK 中的类库以及 Eclipse OpenJ9 Java 虚拟机,使开发人员能够构建和部署 Java 应用程序,这些应用程序将快速启动,提供出色的性能,同时使用更少的内存。 这些运行时的主要亮点包括:

  • 为开发 Java 工作负载提供稳定、免费的环境
  • 适用于各种硬件和软件平台,包括本地、公有云或容器编排器(如 Kubernetes 和 OpenShift)
  • 包括常用的 JDK 版本,如 JDK 8 和 JDK 11 长期支持 (LTS) 版本
  • Eclipse OpenJ9 的深度技术投资带来的性能优势
  • 零使用限制,因此您可以将这些运行时用于开发或生产 https://developer.ibm.com/languages/java/semeru-runtimes/downloads/

⚠️ 建议:仅当知道需要 OpenJ9 虚拟机时,才使用 IBM Semeru Runtime。

Microsoft 构建的 OpenJDK

2021 年,Microsoft 发布了 Microsoft Build of OpenJDK,这是另一个 OpenJDK 版本。

Microsoft可能会包含来自较新OpenJDK版本的错误修复的向后移植,并声称他们将添加可能尚未集成到OpenJDK项目中的补丁。

Microsoft 为主要开发平台提供版本。

https://www.microsoft.com/openjdk

⚠️ 建议:仅当直接在 Azure 上运行 Java 应用程序时,才使用 Microsoft Build of OpenJDK。还有更多既定的选项可用。


参考:https://whichjdk.com

目前default建议JDK版本:使用 Adoptium Eclipse Temurin 21,并确保本地版本与 CI 和生产版本匹配。