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 となっている.
おわりに
結局は自分に必要なバージョンを入れればいいのだけど,バージョンがたくさんある背景はこんなところ.