Skip to content

JDK 选型

1. Oracle JDK 替代

背景

Java 开发一般使用 JDK 进行开发,但发布时也推荐使用 JDK 进行发布,防止出现运行时 JRE 缺少依赖的情况。

Oracle JDK 是官方维护的 JDK 版本,对社区不友好,也没有发布官方的 Docker 镜像。Oracle JDK 最后一个免费商用版本是 2019 年 1 月 15 日发布的 Oracle JDK 8u2018u202,之后的版本需要付费才能商用使用。

OpenJDK 镜像比商业的 Oracle JDK 镜像大约慢 10% 的性能,社区中其他的 OpenJDK 分支的维护质量也参差不齐,需要谨慎选择社区第三方的 Java 镜像。

考虑到商用使用的成本和部分不开源的问题,我们推荐使用社区内其他的 JDK 版本。

推荐使用 Liberica JDK 作为首选,Liberica JDK 基于 OpenJDK,但是增加了很多强大的安全功能,持续维护,并且为过时的 Java 版本提供长期支持。

Liberica JDK 商业使用

标准版本免费商业使用,除非如下情况下才需要收费:需要 365 天 / 7 天 / 24 小时技术支持电话支持 才需要付费。

其他推荐的 JDK 发行版:

2. 安装 JDK

2.1 Windows

Windows 推荐使用 WinGet 安装 JDK,搜索 Liberica JDK 的发行版本:

bash
winget search Liberica

选择一个合适的版本安装即可。

2.2 Linux

Ubuntu/Dedian 系统推荐使用 apt 安装 JDK:

bash
sudo apt install openjdk-8-jdk
sudo apt install openjdk-11-jdk
sudo apt install openjdk-17-jdk
sudo apt install openjdk-21-jdk

2.3 MacOS

bash
brew install semeru-jdk-open@8
brew install semeru-jdk-open@11
brew install semeru-jdk-open@17
brew install semeru-jdk-open@21
brew install microsoft-openjdk@11
brew install microsoft-openjdk@17
brew install microsoft-openjdk@21

3. Docker 镜像选择

背景

Oracle JDK 不能免费用于生产环境,因此我们需要使用其他的 OpenJDK 发行版代替。

推荐使用 Liberica JDK 镜像 作为首选,其中镜像名称以 cds 结尾的是包含了 Class Data Sharing 的版本,可以提升启动速度。

推荐镜像如下(版本号可依据最新的版本来修改):

bash
docker pull bellsoft/liberica-openjdk-debian:17.0.13-cds
docker pull bellsoft/liberica-openjdk-debian:21.0.5-cds
docker pull bellsoft/liberica-openjdk-alpine:17.0.13-cds
docker pull bellsoft/liberica-openjdk-alpine:21.0.5-cds

其他推荐的 OpenJDK 镜像:

  • openjdk:原 OpenJDK 官方测试镜像,停止维护
  • adoptopenjdk:AdoptOpenJDK 官方镜像,停止维护
  • amazoncorretto:Amazon Corretto 是 Amazon 维护的 OpenJDK 镜像,推荐使用
  • eclipse-temurin:Eclipse Temurin 是 AdoptOpenJDK 的继任者,提供了 OpenJDK 的镜像,推荐使用
  • ibm-semeru-runtimes:IBM Semeru Runtimes 是 IBM 维护的 OpenJDK 镜像,推荐使用
  • sapmachine:SapMachine 是 SAP 维护的 OpenJDK 镜像,推荐使用

4. Native 版本的 JDK 和镜像

Liberica 也发行了 NIK 版本,支持 Native 构建,基于 GraalVM 社区版。

参考链接和相关资源: