0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Eclipse OpenJ9 Java 11をLinux上でビルドできるようにする手順です。ここではAArch64用のUbuntu server 24.04.1 LTSを使用しています。

Boot JDKの準備

Boot JDKとして使用するJDKをIBM Semeru Runtimes Downloadsからダウンロードして適当な場所に展開します。OpenJ9 Java 11をビルドするにはJava 11のJDKが必要です。

$ mkdir openj9
$ cd openj9
$ wget https://github.com/ibmruntimes/semeru11-binaries/releases/download/jdk-11.0.25%2B9_openj9-0.48.0/ibm-semeru-open-jdk_aarch64_linux_11.0.25_9_openj9-0.48.0.tar.gz
$ tar xvf ibm-semeru-open-jdk_aarch64_linux_11.0.25_9_openj9-0.48.0.tar.gz
$ jdk-11.0.25+9/bin/java -version
openjdk version "11.0.25" 2024-10-15
IBM Semeru Runtime Open Edition 11.0.25.0 (build 11.0.25+9)
Eclipse OpenJ9 VM 11.0.25.0 (build openj9-0.48.0, JRE 11 Linux aarch64-64-Bit Compressed References 20241107_1091 (JIT enabled, AOT enabled)
OpenJ9   - 1d5831436e
OMR      - d10a4d553
JCL      - edded3f65c based on jdk-11.0.25+9)

ソースツリーの準備

openj9-openjdk-jdk11のGitHubレポジトリーをクローンします。

$ git clone https://github.com/ibmruntimes/openj9-openjdk-jdk11.git

さらに、get_source.shを実行してOMRとOpenJ9という2つのレポジトリーをクローンします。

$ cd openj9-openjdk-jdk11
$ bash get_source.sh

openj9-openjdk-jdk11ディレクトリー内にomrディレクトリーとopenj9ディレクトリーが作られます。
omrはガーベジコレクション (GC) やJIT (just-in-time) コンパイラ、移植レイヤーなど言語実装の基盤部分を含んでいます。Java仮想マシンのコードはopenj9内にあります。
Javaクラスライブラリーのソースコードはopenj9-openjdk-jdk11srcディレクトリーにありますが、OpenJ9固有の一部コードがopenj9/jcl/srcにあります。

必要なパッケージのインストール

ビルドに使用するツールやライブラリーをインストールします。AArch64 Ubuntu以外のLinuxの場合、他にもパッケージを追加する必要があるかもしれません。

$ sudo apt install -y gcc g++ autoconf ca-certificates ccache cmake cpio pkg-config unzip zip libasound2-dev libcups2-dev libdwarf-dev libelf-dev libfontconfig1-dev libssl-dev libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev

configureの実行

configureを実行します。--with-boot-jdk=でBoot JDKの場所を指定します。ここでエラーが出た場合は必要なパッケージが足りていない可能性があります。

$ bash configure --with-boot-jdk=/home/ubuntu/openj9/jdk-11.0.25+9 --with-openssl=system --disable-warnings-as-errors

ビルドの実行

make allでビルドを実行します。makeだけだと最後までビルドされないのでallを指定するのをお忘れなく。ストレージの速度に左右されますが、Raspberry Pi 4で実行すると1時間くらいはかかります。

$ make all
(中略)
Creating jdk image
Stopping sjavac server
Finished building target 'all' in configuration 'linux-aarch64-normal-server-release'

ビルドが成功したら実行してみましょう。生成されたJava 11ランタイムはbuild/linux-aarch64-normal-server-release/images/jdk以下にあります。

$ build/linux-aarch64-normal-server-release/images/jdk/bin/java -version
openjdk version "11.0.26-internal" 2025-01-21
OpenJDK Runtime Environment (build 11.0.26-internal+0-adhoc.ubuntu.openj9-openjdk-jdk11)
Eclipse OpenJ9 VM (build master-1c0f64e5dc, JRE 11 Linux aarch64-64-Bit Compressed References 20250126_000000 (JIT enabled, AOT enabled)
OpenJ9   - 1c0f64e5dc
OMR      - 27feb3b2f
JCL      - d874dd51c9 based on jdk-11.0.26+4)

パスにimagesを含まないbuild/linux-aarch64-normal-server-release/jdkというディレクトリーも存在しますが、images/jdkのほうが最終形です。

他のバージョン

Java 11以外にも8/17/21などのバージョンを同様の手順でビルドできます。ビルド対象のopenj9-openjdk-jdk*レポジトリーをクローンし、適切なバージョンのBoot JDKをconfigure時に指定してください。なお、buildディレクトリーの下のディレクトリー名はJavaのバージョンによって違うので注意が必要です。

  • Java 8/11: build/linux-aarch64-normal-server-release
  • Java 17/21: build/linux-aarch64-server-release

参考

ビルド方法の詳細はEclipse OpenJ9プロジェクトのドキュメントを参照してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?