跳至正文

Linux 使用 OpenJ9 构建 OpenJDK 8

前言

Eclipse OpenJ9:OpenJDK 的一个 Java 虚拟机,为小尺寸、快速启动和高吞吐量而优化。构建在 Eclipse OMR 上,并与 OpenJDK Extensions for OpenJ9 repo 相结合。

系统需求

Linux(CentOS 6/7, Ubuntu 16.04/18.04/20.04)

构建环境


不使用 Docker 构建环境

*使用 Docker 看下面

适合国内环境,只需要能够连接到 GitHub 🙂

1.下载 Docker 构建脚本

wget https://raw.githubusercontent.com/eclipse-openj9/openj9/master/buildenv/docker/mkdocker.sh

2.使用以下命令获取不同版本所需的依赖 (以 Ubuntu 18.04 为例)

bash mkdocker.sh --tag=openj9 --dist=ubuntu --version=18 --gitcache=no --jdk=8 --print

3.安装 mkdocker.sh 打印出来的依赖

apt-get update \
 && apt-get install -qq -y --no-install-recommends \
   ...

4.设置使用 g++-7 和 gcc-7 软件包

export CC=gcc-7 CXX=g++-7

*构建时使用以下参数 --with-cmake=no ,需要下载并配置 freemarker.jar

wget https://sourceforge.net/projects/freemarker/files/freemarker/2.3.8/freemarker-2.3.8.tar.gz/download -O freemarker.tgz
tar -xzf freemarker.tgz freemarker-2.3.8/lib/freemarker.jar --strip-components=2
rm -f freemarker.tgz

5.使用最新的 AdoptOpenJDK v8 build 下载并设置启动 JDK

wget -O bootjdk8.tar.gz "https://api.adoptopenjdk.net/v3/binary/latest/8/ga/linux/x64/jdk/openj9/normal/adoptopenjdk"
tar -xzf bootjdk8.tar.gz
rm -f bootjdk8.tar.gz
mv $(ls | grep -i jdk8) bootjdk8

使用 Docker 构建环境

Docker 安装参考:

1.下载 Docker 构建脚本

wget https://raw.githubusercontent.com/eclipse-openj9/openj9/master/buildenv/docker/mkdocker.sh

2.使用以下命令构建 Docker Image

bash mkdocker.sh --tag=openj9 --dist=ubuntu --version=18 --gitcache=no --jdk=8 --build

3.用以下命令从 openj9 Image 中启动一个 Docker 容器,其中 -v 将你本地系统上的任何目录映射到容器的 /root/hostdir 目录中,这样就可以在二进制文件构建完成后,将其存储起来。

docker run -v <host_directory>:/root/hostdir -it openj9

获取源码

git clone https://github.com/ibmruntimes/openj9-openjdk-jdk8.git
cd openj9-openjdk-jdk8
bash get_source.sh

配置

运行 configure 脚本,检测当前构建环境。

bash configure --with-boot-jdk=/home/jenkins/bootjdks/jdk8

*–with-boot-jdk= 选项中的路径默认是使用 Docker 安装的。如果不使用Docker环境,请设置适合你的路径,例如 “<我的路径>/bootjdk8″,如前面说明中的设置。

构建

make all

产生两个Java构建:一个完整的开发者工具包(jdk)和一个运行时环境(jre)

  • build/linux-x86_64-normal-server-release/images/j2sdk-image
  • build/linux-x86_64-normal-server-release/images/j2re-image

测试

build/linux-x86_64-normal-server-release/images/j2re-image/bin/java -version

命令行输出(OpenJDK 17 样本)

openjdk version "17.0.5-internal" 2022-10-18
OpenJDK Runtime Environment (build 17.0.5-internal+0-adhoc..openj9-openjdk-jdk17)
Eclipse OpenJ9 VM (build master-e94beed58, JRE 17 Linux amd64-64-Bit Compressed References 20220808_000000 (JIT enabled, AOT enabled)
OpenJ9   - e94beed58
OMR      - f764fb1b1
JCL      - d0975f56b15 based on jdk-17.0.5+1)

构建成功 🎉

*更多详细配置或操作请参考以下文档


参考文档

openj9/Build_Instructions_V8.md at master · eclipse-openj9/openj9


发表评论须遵守中华人民共和国相关法律法规。违规评论将会被删除。

Comments must subject to the relevant laws and regulations of the People’s Republic of China. Offending comments will be deleted.

标签:

发表回复

您的电子邮箱地址不会被公开。