Eclipse OpenJ9 项目:OpenJDK 11 构建指南详解

Eclipse OpenJ9 项目:OpenJDK 11 构建指南详解

openj9 Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo. openj9 项目地址: https://gitcode.com/gh_mirrors/op/openj9

前言

Eclipse OpenJ9 是一个高性能的企业级 Java 虚拟机(JVM),最初由 IBM 开发并贡献给 Eclipse 基金会。本文将详细介绍如何在 Linux、AIX 等不同平台上构建 OpenJDK 11 与 OpenJ9 的组合版本。

构建环境准备

Linux 环境准备

对于 Linux 系统(以 Ubuntu 22.04 为例),有两种主要的构建方式:

Docker 构建方式(推荐)
  1. 安装 Docker 环境
  2. 使用提供的 mkdocker.sh 脚本创建构建镜像:
    bash mkdocker.sh --tag=openj9 --dist=ubuntu --version=22 --gitcache=no --jdk=11 --build
    
  3. 启动容器并映射主机目录:
    docker run -v <host_directory>:/root/hostdir -it openj9
    
非 Docker 构建方式
  1. 安装必要的依赖包:
    • autoconf
    • make
    • gcc-11/g++-11
    • 其他开发工具链
  2. 设置编译器环境变量:
    export CC=gcc-11 CXX=g++-11
    
  3. 准备引导 JDK(Boot JDK):
    • 下载 AdoptOpenJDK v11
    • 解压并设置路径

AIX 环境准备

对于 AIX 7.2 系统:

  1. 安装必要的 IBM 软件包:
    • xlc/C++ 16 编译器
    • x11.adt.ext
  2. 通过 yum 安装 RPM 依赖包
  3. 准备 AIX 平台的引导 JDK

源码获取

  1. 克隆 OpenJDK 11 扩展仓库:
    git clone https://github.com/ibmruntimes/openj9-openjdk-jdk11.git
    cd openj9-openjdk-jdk11
    
  2. 获取 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

重要配置选项

  1. 引用压缩支持

    • --with-noncompressedrefs=no:仅支持压缩引用
    • --with-noncompressedrefs:仅支持非压缩引用
    • 默认:混合引用模式
  2. 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 特殊说明

  1. 对于非 x86 架构(如 PowerPC、z Systems),构建过程类似但输出路径不同
  2. 可使用 LOG=cmdlines 参数获取更详细的构建输出

AIX 特殊说明

  1. 必须使用 xlc 16 或更高版本编译器
  2. 需要特别注意 CUPS 库的路径配置

构建优化建议

  1. 并行构建:可使用 --with-num-cores 选项加速构建
  2. 增量构建:修改代码后可直接运行 make 进行增量构建
  3. 调试构建:添加 --with-debug-level=slowdebug 生成调试版本

常见问题解决

  1. 依赖缺失:仔细检查 mkdocker.sh 输出的依赖列表
  2. 编译器版本:确保使用 gcc-11/g++-11 或兼容版本
  3. 内存不足:大型项目构建需要足够内存,建议至少 8GB

结语

通过本文的详细指导,开发者应能够在各种平台上成功构建 OpenJDK 11 与 OpenJ9 的组合版本。OpenJ9 作为一款高性能 JVM,特别适合企业级应用和云原生环境,了解其构建过程有助于深入理解 JVM 工作原理和进行定制化开发。

构建过程中如遇到问题,可参考 OpenJDK 和 OpenJ9 的官方文档获取更多调试信息。对于生产环境,建议使用官方发布的稳定版本而非自行构建的版本。

openj9 Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo. openj9 项目地址: https://gitcode.com/gh_mirrors/op/openj9

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

娄筝逸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值