TOC
MicrosoftがOpenJDKをビルドして提供することを発表
これまでMicrosoftのクラウドサービスであるAzure上でJavaを使用する際にはAzul Systemsの提供するJDKをサポートするとしていました。
しかし、2021年4月6日、MicrosoftはOpenJDKのLTSディストリビューションとして「Microsoft Build of OpenJDK」を発表しました。現在はJava11のJDKがプレビューリリースとして公開されています。
かつてJavaとVisual J++を巡ってSunとMicrosoftが訴訟をしていたことからも今回の動きは大きな転換点かと考えています。Microsoft Build of OpenJDKはDebian系のディストロの場合はaptで導入できるため、現時点でaptで導入できるJDK4種類を比較して導入する方法を纏めます。
JavaのバージョンとLTS
プログラミング言語としてのJavaは、Java8をLTSとしてリリースして以降は毎年3月と9月に新バージョンをリリースし、以降のリリースでは11(2018年9月)、17(2021年9月予定)を5年間メンテナンスするLTSと定義しています。
開発する側として意識するバージョンはLTSの8、11とその時点での最新版(執筆時点での16)、ユーザー視点では意識するのはLTSの8と11(と17)のみで問題ないと思います。
Ubuntu標準のJDK、Eclipse Adoptium、Microsoft Build of OpenJDK、Liberica JDKの特徴
JDKの名称 | 提供バージョン |
---|---|
Ubuntu標準のJDK | 8/11/13/14 (20.04) |
Eclipse Adoptium | 8/11/14/15/16 |
Microsoft Build of OpenJDK | 11 |
Liberica JDK | 8/11/12/13/14/15/16 |
Ubuntu標準のJDKの特徴
- ディストロのリリース後サポート期間内のものがサポートされているように見える(17リリース後のサポートが不明)
- 追加リポジトリの設定なくインストール、アップデートできるため、ユーザー視点では一番手間が少ない
- パッケージとしてJDK/JRE、headlessを分けて提供しているため、例えばコンパイラが必要ないGUIのない環境ではheadlessのJREをインストールするとディスクサイズを節約できる
Eclipse Adoptiumの特徴
- AdoptOpenJDKという名称だったが、現在はEclipse財団に移管されてEclipse Adoptiumという名称になっている
- ベンダーニュートラルを目指し、Alibaba Cloud / Huawei / IBM / iJUG / Karakun AG / Microsoft / New Relic / Red Hatが出資して設立された
- VMの種類として、HotSpotの他に組み込み向けとして提供されていたJ9ベースのOpenJ9も提供している
- OpenJ9のVMについてはヒープを57GB以上使用する場合のOpenJ9 XL Heapも提供されています(パッケージ名は
adoptopenjdk-11-openj9xl
等) OpenJ9 XL Heap – Eclipse OpenJ9 Blog
Microsoft Build of OpenJDKの特徴
- LTSのみリリース予定
Liberica JDKの特徴
- Bellsoftが提供するJDKで、言語サポートされているJavaのバージョンをリリースしている
- Java11で標準機能として提供されなくなったデスクトップ環境JavaFXをバンドルしたLiberica Full JDKをリリースしている
- Ubuntu標準のJDKと同様、JRE、headlessが提供されている
各種JDK(Java11)のインストール方法
Ubuntu標準のJDK
# apt-get install openjdk-11-jdk
$ /usr/lib/jvm/java-11-openjdk-amd64/bin/java -version
openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment (build 11.0.10+9-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.10+9-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)
Eclipse Adoptium
Installation | AdoptOpenJDK - Open source, prebuilt OpenJDK binaries
現時点ではインストール方法はまだEclipse Adoptiumのサイトに移動していないので、AdoptOpenJDKのサイトを参照します。
リポジトリの追加
# apt-get install wget apt-transport-https gnupg
# wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | apt-key add -
# echo "deb https://adoptopenjdk.jfrog.io/adoptopenjdk/deb focal main" | tee /etc/apt/sources.list.d/adoptopenjdk.list
# apt-get update
JDK(HotSpot)のインストール
# apt-get install adoptopenjdk-11-hotspot
$ /usr/lib/jvm/adoptopenjdk-11-hotspot-amd64/bin/java -version
openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.10+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.10+9, mixed mode)
JDK(OpenJ9)のインストール
# apt-get install adoptopenjdk-11-openj9
$ /usr/lib/jvm/adoptopenjdk-11-openj9-amd64/bin/java -version
openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.10+9)
Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.24.0, JRE 11 Linux amd64-64-Bit Compressed References 20210120_910 (JIT enabled, AOT enabled)
OpenJ9 - 345e1b09e
OMR - 741e94ea8
JCL - 0a86953833 based on jdk-11.0.10+9)
Microsoft Build of OpenJDK
リポジトリの追加
# wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
# dpkg -i packages-microsoft-prod.deb
# apt install apt-transport-https
# apt update
JDKのインストール
# apt install msopenjdk-11
$ /usr/lib/jvm/msopenjdk-11-amd64/bin/java -version
openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment Microsoft-18724 (build 11.0.10+9)
OpenJDK 64-Bit Server VM Microsoft-18724 (build 11.0.10+9, mixed mode)
Liberica JDK
Liberica JDK 11.0.10+9 Install Guide | BellSoft - Java Platform & Applications Experts
リポジトリの追加
# wget -q -O - https://download.bell-sw.com/pki/GPG-KEY-bellsoft | apt-key add -
# echo "deb [arch=amd64] http://apt.bell-sw.com/ stable main" | tee /etc/apt/sources.list.d/bellsoft.list
# apt-get update
JDKのインストール
# apt-get install bellsoft-java11
$ /usr/lib/jvm/bellsoft-java11-amd64/bin/java -version
openjdk version "11.0.10" 2021-01-19 LTS
OpenJDK Runtime Environment (build 11.0.10+9-LTS)
OpenJDK 64-Bit Server VM (build 11.0.10+9-LTS, mixed mode)
JDK(Full)のインストール
# apt-get install bellsoft-java11-full
$ /usr/lib/jvm/bellsoft-java11-full-amd64/bin/java -version
openjdk version "11.0.10" 2021-01-19 LTS
OpenJDK Runtime Environment (build 11.0.10+9-LTS)
OpenJDK 64-Bit Server VM (build 11.0.10+9-LTS, mixed mode)
VM自体はJavaFX同梱のFullとStandardで全く同じなので、JavaFXを使う場合はFull、予定がない場合は無印をインストールすれば問題ないと思います。
使用するJavaの切替
Ubuntu(やDebian)では、複数の実装が存在するソフトウェア(JavaやPython、Ruby、Webブラウザ等)はupdate-alternatives
コマンドで使用する実装を切り替えることができます。
Java関連のコマンドで切替の対象になっているのはjava
javac
に始まり非常に多いのですが、ターミナルから直接打つこれらのコマンドの参照先を切り替えることで複数インストールされているJavaの実装やバージョンを切り替えることができます。
# update-alternatives --config java
alternative java (/usr/bin/java を提供) には 7 個の選択肢があります。
選択肢 パス 優先度 状態
------------------------------------------------------------
* 0 /usr/lib/jvm/bellsoft-java11-full-amd64/bin/java 21100103 自動モード
1 /usr/lib/jvm/adoptopenjdk-11-hotspot-amd64/bin/java 1111 手動モード
2 /usr/lib/jvm/adoptopenjdk-11-openj9-amd64/bin/java 1111 手動モード
3 /usr/lib/jvm/adoptopenjdk-11-openj9xl-amd64/bin/java 1111 手動モード
4 /usr/lib/jvm/bellsoft-java11-amd64/bin/java 21100102 手動モード
5 /usr/lib/jvm/bellsoft-java11-full-amd64/bin/java 21100103 手動モード
6 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 手動モード
7 /usr/lib/jvm/msopenjdk-11-amd64/bin/java 1111 手動モード
現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 2
update-alternatives: /usr/bin/java (java) を提供するためにマニュアルモードで /usr/lib/jvm/adoptopenjdk-11-openj9-amd64/bin/java を使います
LibericaのJDKの優先度が極端に大きくなっているので、インストールする場合は気を付けた方が良いと思います。
スポンサーリンク
comments powered by Disqus