OpenJDKのバージョンの選び方

はじめに

積極的にJavaを使わない人にとって,環境構築時にどのJDKを使えばいいのか悩むことがあると思う.
とりあえず最新っぽいものを選ぶのか,なんとなく8を選ぶのか.

答えは ”動かすアプリケーションによる” なんだけれど, バージョンの違いについて超簡単に整理しておく.

OpenJDKのバージョン

JDKはもともと機能ベースのリリースモデルを採用していたが,JDK10からは時間ベースのリリースモデルに切り替わっている1
また長期サポート(Long-Term-Support:LTS)が設定されるようになった. Oracle Java SE サポート・ロードマップ2は以下の通り.

リリース 利用開始(GA)日 Premier Support 期限 Extended Support 期限 Sustaining Support
7 2011年7月 2019年7月 2022年7月**** 無期限
8** 2014年3月 2022年3月 2030年12月 無期限
9 (non‑LTS) 2017年9月 2018年3月 設定なし 無期限
10 (non‑LTS) 2018年3月 2018年9月 設定なし 無期限
11 (LTS) 2018年9月 2023年9月 2026年9月 無期限
12 (non‑LTS) 2019年3月 2019年9月 設定なし 無期限
13 (non‑LTS) 2019年9月 2020年3月 設定なし 無期限
14 (non‑LTS) 2020年3月*** 2020年9月 設定なし 無期限
15 (non‑LTS) 2020年9月*** 2021年3月 設定なし 無期限

CentOSの選択肢

$ cat /etc/centos-release
CentOS Linux release 7.7.1908 (Core)
$ yum search openjdk | grep "openjdk\.x86_64"
java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment     # OpenJDK 6
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment     # OpenJDK 7
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment 8   # OpenJDK 8
java-11-openjdk.x86_64 : OpenJDK Runtime Environment 11     # OpenJDK 11
java-latest-openjdk.x86_64 : OpenJDK Runtime Environment 13 # OpenJDK 13
$ yum info java-latest-openjdk.x86_64
...
利用可能なパッケージ
名前                : java-latest-openjdk
アーキテクチャー    : x86_64
エポック            : 1
バージョン          : 13.0.2.8
リリース            : 1.rolling.el7
容量                : 207 k
リポジトリー        : epel/x86_64
要約                : OpenJDK Runtime Environment 13
URL                 : http://openjdk.java.net/
ライセンス          : ASL 1.1 and ASL 2.0 and BSD and BSD with advertising and GPL+ and GPLv2 and GPLv2 with exceptions
                    : and IJG and LGPLv2+ and MIT and MPLv2.0 and Public Domain and W3C and zlib and ISC and FTL and RSA
説明                : The OpenJDK runtime environment.

リリースモデルの変更に伴い OpenJDK 6,7,8 と 11 ではパッケージ名が変わっている.
また,2020/03現在の epel 最新は OpenJDK 13 となっている.

おわりに

結局は自分に必要なバージョンを入れればいいのだけど,バージョンがたくさんある背景はこんなところ.