Eclipse OpenJ9 项目:OpenJDK 11 构建指南详解
前言
Eclipse OpenJ9 是一个高性能的企业级 Java 虚拟机(JVM),最初由 IBM 开发并贡献给 Eclipse 基金会。本文将详细介绍如何在 Linux、AIX 等不同平台上构建 OpenJDK 11 与 OpenJ9 的组合版本。
构建环境准备
Linux 环境准备
对于 Linux 系统(以 Ubuntu 22.04 为例),有两种主要的构建方式:
Docker 构建方式(推荐)
- 安装 Docker 环境
- 使用提供的
mkdocker.sh
脚本创建构建镜像:bash mkdocker.sh --tag=openj9 --dist=ubuntu --version=22 --gitcache=no --jdk=11 --build
- 启动容器并映射主机目录:
docker run -v <host_directory>:/root/hostdir -it openj9
非 Docker 构建方式
- 安装必要的依赖包:
- autoconf
- make
- gcc-11/g++-11
- 其他开发工具链
- 设置编译器环境变量:
export CC=gcc-11 CXX=g++-11
- 准备引导 JDK(Boot JDK):
- 下载 AdoptOpenJDK v11
- 解压并设置路径
AIX 环境准备
对于 AIX 7.2 系统:
- 安装必要的 IBM 软件包:
- xlc/C++ 16 编译器
- x11.adt.ext
- 通过 yum 安装 RPM 依赖包
- 准备 AIX 平台的引导 JDK
源码获取
- 克隆 OpenJDK 11 扩展仓库:
git clone https://github.com/ibmruntimes/openj9-openjdk-jdk11.git cd openj9-openjdk-jdk11
- 获取 OpenJ9 和 OMR 源码:
bash get_source.sh
关于 OpenSSL 支持:如需构建带 OpenSSL 支持的版本,可使用 -openssl-branch
参数指定 OpenSSL 版本。
配置构建参数
Linux 配置示例
bash configure --with-boot-jdk=/path/to/bootjdk11
AIX 配置示例
bash configure --with-cups-include=/opt/freeware/include --disable-warnings-as-errors
重要配置选项:
-
引用压缩支持:
--with-noncompressedrefs=no
:仅支持压缩引用--with-noncompressedrefs
:仅支持非压缩引用- 默认:混合引用模式
-
OpenSSL 支持:
--with-openssl=fetched|system|path_to_library --enable-openssl-bundling
执行构建
使用以下命令开始构建:
make all
注意:
- 不要仅使用
make
,因为它默认只构建exploded-image
- 如需改变默认目标,可在配置时添加
--default-make-target=images
构建输出
构建完成后,主要输出目录为:
- JDK 完整开发套件:
build/<platform>-<arch>-normal-server-release/images/jdk
- JRE 运行时环境(需额外执行
make legacy-jre-image
) - 调试信息:
debug-image
目录 - 测试镜像:
test
目录
验证构建
构建完成后,可运行以下命令验证:
cd build/linux-x86_64-normal-server-release/images/jdk
./bin/java -version
预期输出应包含 OpenJ9 版本信息。
平台特定说明
Linux 特殊说明
- 对于非 x86 架构(如 PowerPC、z Systems),构建过程类似但输出路径不同
- 可使用
LOG=cmdlines
参数获取更详细的构建输出
AIX 特殊说明
- 必须使用 xlc 16 或更高版本编译器
- 需要特别注意 CUPS 库的路径配置
构建优化建议
- 并行构建:可使用
--with-num-cores
选项加速构建 - 增量构建:修改代码后可直接运行
make
进行增量构建 - 调试构建:添加
--with-debug-level=slowdebug
生成调试版本
常见问题解决
- 依赖缺失:仔细检查
mkdocker.sh
输出的依赖列表 - 编译器版本:确保使用 gcc-11/g++-11 或兼容版本
- 内存不足:大型项目构建需要足够内存,建议至少 8GB
结语
通过本文的详细指导,开发者应能够在各种平台上成功构建 OpenJDK 11 与 OpenJ9 的组合版本。OpenJ9 作为一款高性能 JVM,特别适合企业级应用和云原生环境,了解其构建过程有助于深入理解 JVM 工作原理和进行定制化开发。
构建过程中如遇到问题,可参考 OpenJDK 和 OpenJ9 的官方文档获取更多调试信息。对于生产环境,建议使用官方发布的稳定版本而非自行构建的版本。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考