本文在写作过程中参阅了whichJDK

要构建和运转 Java 应用程序,就需要装置 JDK 环境。
OpenJDK 是 Java SE 标准的开源软件,但它只是源代码。二进制发行版由不同的供应商供给,适用于许多受支撑的渠道,这些发行版在答应证、商业支撑、支撑的渠道和更新频率方面有所不同。
先说定论:
✅ 主张运用 Adoptium Eclipse Temurin 17 并确保您的本地版别与 CI 和生产版别匹配。
首要介绍不同版别的JDK
当时,JDK 计划每六个月(即每年的三月和九月)发布一个具有新版别。第三年的9 月发布一个长时刻支撑 (LTS) 版别,许诺最少更新三年。
JDK版别 | 类型 | 发布日期 | 首要更新 | 引荐 |
---|---|---|---|---|
8 | 长时刻支撑 | 03/2014 | lambda | 从前发布模型下的最终一个 LTS 版别。Oracle 的免费更新已结束,但仍由其他人保护。在接下来的几个月内晋级到 11 或 17! |
9 | 特征 | 09/2017 | 模块 | 引入了新的发布模型。停产。现在晋级到 11 或 17! |
10 | 特征 | 03/2018 | var | 停产。现在晋级到 11 或 17! |
11 | 长时刻支撑 | 09/2018 | 新的 HTTP 客户端 | 广泛运用的 LTS 版别。计划在未来几个月内晋级到版别 17。 |
12 | 特征 | 03/2019 | 停产。现在晋级到17! | |
13 | 特征 | 09/2019 | 停产。现在晋级到17! | |
14 | 特征 | 03/2020 | 新的Switch表达式 | 停产。现在晋级到17! |
15 | 特征 | 09/2020 | 文本块 | 停产。现在晋级到17! |
16 | 特征 | 03/2021 | 记录 | 停产。现在晋级到17! |
17 | 长时刻支撑 | 09/2021 | 密封类 | 当时的 LTS 版别。当即更新至 17.0.3+! |
18 | 特征 | 03/2022 | 默许为 UTF-8 | 坚持17! 这是一个没有重要功用的短期版别。-Dfile.encoding=UTF-8 您或许想经过在当时的 JDK 中进行设置来查看是否遇到“默许 UTF-8”的任何问题。 |
19 | 特征 | 09/2022 | 仅预览和孵化器功用 | 坚持17! 如果您之前晋级到 18,请当即晋级到 19。 |
您必须决议是要坚持运用最新的 LTS 版别,仍是要运用最新的功用版别并每六个月晋级一次。两种挑选都能够,但如果您不确定,请坚持运用最新的 LTS 版别。
OpenJDK 项目本身在openjdk.java.net上进行管理,您能够在其间找到标准、源代码和邮件列表,但没有可供下载的构建版别。您需要挑选一个发行版。
不同的厂商版别:
Oracle OpenJDK
Oracle 以紧缩存档格式为 Linux、macOS 和 Windows 供给 OpenJDK 构建。
这些构建只会更新 6 个月。在此短时刻后将无法取得更新和安全补丁。这也适用于 LTS 版别!例如,最新的 OpenJDK 11 版别是11.0.2+9而当时的 OpenJDK 版别是11.0.12+7。
Oracle Java SE Development Kit (JDK)
Oracle 供给了 OpenJDK 的商业版别,它根据与 OpenJDK 完全相同的来历:Oracle Java SE Development Kit (JDK)。Oracle 为这些构建供给更新定期更新和安全补丁。
Adoptium Eclipse Temurin
Eclipse Adoptium是Eclipse Foundation旗下的顶级项目,为开源软件供给资源和专业的治理模型。Adoptium 工作组由对 Java 技能有战略爱好的首要公司和安排组成,包含 Red Hat、IBM、Microsoft、Azul 和 iJUG。之前的 AdoptOpenJDK 项目现已迁移到 Eclipse Adoptium。
Adoptium OpenJDK 构建称为Eclipse Temurin,以区别项目和构建。
Eclipse Temurin 构建是高质量的、供应商中立的,并且在宽松答应下经过了 TCK 测试。
Adoptium 表示,只需积极保护相应的上游源代码,它将继续为 LTS 版别构建二进制文件。
AdoptOpenJDK
AdoptOpenJDK 项目是 Eclipse Adoptium 的前身,为默许的 HotSpot 和 OpenJ9 虚拟机供给高质量的 OpenJDK 构建。
Azul Zulu
Azul Systems, Inc. 专注于专业的 Java 技能和 JDK 的商业支撑。Azul 在业界享有很高的名誉,并参加了各种工作组来开展 Java 渠道。
Azul为许多操作体系和架构供给名为Azul Zulu的开源 OpenJDK 构建。此外,Azul 还供给满足特殊要求的构建,例如精简的 JRE 和包含 OpenJFX 的构建。
这些构建的缺陷是依赖于一家公司,这或许会忽然更改其答应或更新方针。
Azul Zing
Azul Zing 是一个商业 JDK,目前作为Azul Platform Prime出售。它需要与 Azul Systems 签订商业合同才能用于生产。
Zing 根据 OpenJDK,并增加了取得专利的“C4 无间断废物收集器”、“Falcon JIT 编译器”(以更高的 CPU 运用率和更长的发动和预热时刻为代价优化吞吐量)和一些功用加快编译器预热时刻(经过剖析和存储文件中训练运转的优化来减轻 Falcon JIT 编译器较慢的预热时刻)。
Azul Zing 在金融交易应用程序中有一些用例,其间 GC 暂停是一个问题。除此之外,惯例 OpenJDK 包含免费的低暂停时刻 GCShenandoah和ZGC,它们或许是代替方案。
BellSoft Liberica JDK
与Azul类似,BellSoft专注于专业的Java技能和对JDK的商业支撑。此外,BellSoft 在业界享有很高的名誉,并参加了各种工作组来开展 Java 渠道。
BellSoft为简直一切操作体系和架构供给名为Liberica JDK的开源 OpenJDK 构建。
流行的 Spring Boot 结构挑选 Liberica JDK 作为其buildpack的运转时。
这些构建的缺陷是依赖于一家公司,这或许会忽然更改其答应或更新方针。
IBM Semeru Runtime
IBM 开发了自己的 Java 虚拟机版别,称为 J9,并作为Eclipse OpenJ9 开源。它是默许 HotSpot Java 虚拟机的代替品,但它从未取得太多人气。
IBM 现在供给根据 Eclipse OpenJ9 Java 虚拟机和一些 OpenJDK 类库的名为Semeru Runtime的构建。 OpenJ9内存占用低,运用同享类发动速度快,但与 Hotspot 虚拟机相比吞吐量较低。
Amazon Corretto
因为 Oracle 改变了对其 OpenJDK 构建的支撑和答应方针,首要的云供给商决议建立自己的保管 OpenJDK 构建并供给长时刻更新。显然,这是为了躲避危险,尤其是对甲骨文的诉讼。
2018 年,AWS 发布了Corretto,这是另一个 OpenJDK 构建。
AWS 包含来自较新 OpenJDK 版别的过错修正的反向端口,并宣称他们将增加或许尚未集成到 OpenJDK 项目中的补丁。亚马逊现已实施了一个代替加密供给商,该供给商已针对其服务进行了优化。它计划用作 Corretto 中的默许加密实现。
Amazon 为首要开发渠道供给发行版,并为其自己的 Amazon Linux 2 供给优化版别。
Microsoft OpenJDK
2021 年,微软发布了 OpenJDK 的 Microsoft Build,这是另一个 OpenJDK 构建。
Microsoft 或许会包含来自较新 OpenJDK 版别的过错修正的反向端口,并宣称他们将增加或许尚未集成到 OpenJDK 项目中的补丁。
Microsoft 为首要开发渠道供给版别。
Alibaba Dragonwell
阿里巴巴供给了一个 OpenJDK 构建,其间包含后台端口和一些额定的功用。
SapMachine
SapMachine 是另一个 OpenJDK Build,由 SAP 保护。
Red HatOpenJDK
Red Hat 为 LTS 版别供给 OpenJDK 构建。
OJDK
该项目已停止。ojdkbuild 项目的方针是供给 OpenJDK 的 Windows x86_64 二进制文件,这些二进制文件在行为上尽或许接近 Linux OpenJDK 包,例如,经过运用体系库而不是 zlib 或 OpenSSL 的打包版别。它运用了 CentOS 中包含的软件包。这些构建的一个用例是在 Windows 机器上开发 Java 软件并将它们部署到生产环境中的 Linux 服务器。
GraalVM
GraalVM 是一个完全兼容的 JDK,但与一切其他构建有很大不同。
GraalVM 由 Oracle 开发。它根据 OpenJDK,但包含一个新的高性能编译器和一个新的多语言虚拟机(能够履行用不同编程语言编写的代码)。还能够创建高度优化且发动速度极快的特定于渠道的本机可履行文件。