信创平台 JDK 选择是做什么的
Java 应用在信创平台运行的前提是 JDK 与 CPU 架构匹配:aarch64 平台需要 aarch64 版本的 JDK,可选发行版自带的 OpenJDK 或厂商适配版本;x86 平台可选择面更广。选型的关键不是「版本越新越好」,而是与业务应用的兼容性清单对齐,部分行业应用对 JDK 厂商与大版本有明确认证要求,替换前必须核对,避免出现认证与兼容性风险。
基本信息
| 架构匹配 | aarch64、x86-64、LoongArch 需各自对应的 JDK 安装包 |
|---|---|
| 来源选择 | 发行版仓库 OpenJDK 或厂商适配 JDK |
| 查看现状 | java -version、readlink -f $(which java) |
| 多版本管理 | update-alternatives --config java 或显式 JAVA_HOME |
| 环境变量 | JAVA_HOME 与 PATH,注意在被托管服务中同样生效 |
典型使用场景
- 业务系统从 x86 迁移到鲲鹏或飞腾平台,需要确认有对应架构的 JDK 可用
- 同机存在多个 JDK,应用启动报类或加密相关异常,需要统一实际生效版本
- 行业应用有指定 JDK 厂商与版本要求,选型要以该清单为准而非自行升级
- systemd 托管的 Java 服务与登录会话的 java 版本不一致,导致行为差异
- 排查加密算法或证书相关异常:JDK 大版本变化会改变默认算法与安全策略
- 交付前统一终端 JDK 环境,避免每台机器手工配置产生差异
现状确认与切换
现状确认与切换
java -version 2>&1 | head -3 # 实际生效版本与厂商信息
readlink -f $(which java) # 解析到真实安装目录
rpm -qa | grep -iE 'jdk|java' | head # RPM 系已安装包
dpkg -l | grep -iE 'jdk|openjdk' | head # deb 系已安装包
sudo update-alternatives --config java # 多版本时选择默认
export JAVA_HOME=/usr/lib/jvm/<jdk 目录> # 或显式指定
java -version # 验证切换结果
systemctl show app-web -p Environment # 确认托管服务看到的环境变量选型核对项
| 核对项 | 为什么要看 | 做法 |
|---|---|---|
| 架构 | 架构不匹配直接无法启动 | uname -m 与安装包架构对照 |
| JDK 大版本 | 类库与 GC 行为差异影响业务 | 按应用兼容性清单核对 |
| 厂商适配 | 行业应用可能有认证要求 | 以应用方提供的清单为准 |
| 运行模式 | 服务端应使用 Server 模式相关参数 | 确认生效的 JVM 选项 |
| 生效位置 | 服务与登录会话可能不同版本 | 在服务上下文中核对版本 |
被 systemd 托管的服务不会继承登录用户的环境变量,切换 JDK 时要在单元文件或 EnvironmentFile 中同步设置 JAVA_HOME,否则会出现「登录用户看到新版本、服务仍跑旧版本」的情况。
升级 JDK 大版本前必须跑业务回归:加密算法默认集、证书信任链与 GC 行为都可能变化,直接升级在生产环境属于高风险操作。