JDK 选型
1. Oracle JDK 替代
背景
Java 开发一般使用 JDK 进行开发,但发布时也推荐使用 JDK 进行发布,防止出现运行时 JRE 缺少依赖的情况。
Oracle JDK 是官方维护的 JDK 版本,对社区不友好,也没有发布官方的 Docker 镜像。Oracle JDK 最后一个免费商用版本是 2019 年 1 月 15 日发布的 Oracle JDK 8u201 和 8u202,之后的版本需要付费才能商用使用。
OpenJDK 镜像比商业的 Oracle JDK 镜像大约慢 10% 的性能,社区中其他的 OpenJDK 分支的维护质量也参差不齐,需要谨慎选择社区第三方的 Java 镜像。
考虑到商用使用的成本和部分不开源的问题,我们推荐使用社区内其他的 JDK 版本。
推荐使用 Liberica JDK 作为首选,Liberica JDK 基于 OpenJDK,但是增加了很多强大的安全功能,持续维护,并且为过时的 Java 版本提供长期支持。
Liberica JDK 商业使用
标准版本免费商业使用,除非如下情况下才需要收费:需要 365 天 / 7 天 / 24 小时技术支持 或 电话支持 才需要付费。
其他推荐的 JDK 发行版:
- Liberica JDK:贝尔实验室维护的 JDK,Spring 推荐的 JDK 版本。
- 毕昇 JDK:毕昇 JDK 是华为内部基于 OpenJDK 定制的 Huawei JDK 的开源版本
- RedHat OpenJDK:红帽子基于 Open JDK 构建
- 阿里巴巴 OpenJDK:阿里巴巴基于 Open JDK构建
- 腾讯 OpenJDK: 腾讯基于 Open JDK 构建
- 微软 OpenJDK:微软基于 Open JDK 构建
- IBM OpenJDK: IBM 基于 Open JDK 构建
- Eclipse OpenJDK:Eclipse 基金会构建
2. 安装 JDK
2.1 Windows
Windows 推荐使用 WinGet 安装 JDK,搜索 Liberica JDK 的发行版本:
winget search Liberica
选择一个合适的版本安装即可。
2.2 Linux
Ubuntu/Dedian 系统推荐使用 apt
安装 JDK:
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
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 的版本,可以提升启动速度。
推荐镜像如下(版本号可依据最新的版本来修改):
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 社区版。
参考链接和相关资源: