Javaのアップデート戦略を考える

Javaで実装されたシステムのバージョンアップ戦略を検討するため、今後のJavaのリリースサイクルとサポートに関する情報を整理した。なお、本記事では無償利用が可能なJDKに関する情報を中心に整理している。

#### これからのJavaリリースサイクルとサポート

以下の2点がこれまでからの大きな変更点である。

##### (1) Java 9以降はメジャーバージョンアップが6ヵ月ごとになった（[参考](https://www.java.com/releases/matrix/)）

| バージョン | リリース          |
| ---------- | ----------------- |
| 10         | 2018年3月         |
| 11 (LTS)   | 2018年9月         |
| 12         | 2019年3月（予定） |

##### (2) OracleのOpen JDKのサポートがリリースから6ヵ月間になった

ただし、3年ごとのLTSバージョンは有償で5～8年のサポート（これをOracle JDKと呼ぶ）を受けられる。

(2021/9/18 追記) Java 17から、次のLTSリリースの1年後まで無償サポートが提供されることとなった。（[参考](https://www.publickey1.jp/blog/21/oracle_jdkjava_17.html)）

#### 無償利用できるOpen JDK

OracleがOpen JDKのサポート期間を短縮したことで、他のベンダーがOpen JDKの長期サポートを発表している。無償で利用できるものは以下の通り。

無償利用可能なOpenJDKとサポート期限

| JDK                                                          | Java 8 (LTS)            | Java 11 (LTS)            | Java 17 (LTS)                                 |
| ------------------------------------------------------------ | ----------------------- | ------------------------ | --------------------------------------------- |
| [Oracle JDK](https://www.oracle.com/java/technologies/downloads/) ([Support](https://www.oracle.com/java/technologies/java-se-support-roadmap.html)) | (有償のみ)              | (有償のみ)               | 2024年9月まで ※1                              |
| [Eclipse Adoptium](https://adoptium.net/) ([Support](https://adoptium.net/support.html)) ※2 | 少なくとも2026年5月まで | 少なくとも2024年10月まで | TBD                                           |
| [Amazon Coretto](https://aws.amazon.com/jp/corretto/) ([Support](https://aws.amazon.com/corretto/faqs/#support)) | 少なくとも2026年6月まで | 少なくとも2027年9月まで  | TBD                                           |
| [Microsoft Build of OpenJDK](https://www.microsoft.com/openjdk) ([Support](https://docs.microsoft.com/en-us/java/openjdk/support)) | (提供なし)              | 少なくとも2024年10月まで | 少なくとも2027年9月まで<br>(リリース日は未定) |
| [SapMachine](https://github.com/SAP/SapMachine/wiki) ([Support](https://github.com/SAP/SapMachine/wiki/Security-Updates,-Maintenance-and-Support)) | (提供なし)              | 2023年9月まで            | 2026年9月まで                                 |
| [BellSoft Liberica JDK](https://bell-sw.com/pages/libericajdk/) ([Support](https://bell-sw.com/pages/roadmap/)) | 2031年3月まで           | 2027年5月まで            | 2030年5月まで                                 |

※1 次のLTSリリースがOracle JDK 21 (2023年9月) とされているため、そこから1年間として記載。
※2 [AdoptOpenJDK](https://adoptopenjdk.net/)から2021年7月に移行された。

その他、特定の条件で無償利用できるOpenJDKには、[RedHat OpenJDK](https://developers.redhat.com/products/openjdk/overview/)（RHELのサポートに含まれる）と [Zulu OpenJDK](https://jp.azul.com/downloads/zulu/)（[Microsoft Azure利用者は無償](https://azure.microsoft.com/ja-jp/blog/microsoft-and-azul-systems-bring-free-java-lts-support-to-azure/)）がある。

#### アップデート戦略

これまでOracle JDKを利用していた場合は、JDK 17以降のサポート期限も鑑みて有償ライセンスを購入を判断することになる。元々何らかのOpen JDKビルドを利用していた場合は、この機会にサポート期限の長いものに乗り換えるのもあり。AWS、Azure、OracleなどのIaaSを使っている場合は、おそらくそれぞれのベンダのOpenJDKビルドを簡単に導入（更新）する手段が提供されていくのでは、といった感じか。

#### 参考

* [OpenJDKと各種JDKディストリビューションの情報源まとめ](https://qiita.com/yamadamn/items/2dd26a014791b9557199)
* [JDKの長期商用サポート(LTS)の提供ベンダー比較（無償利用についても言及あり）](https://qiita.com/u-tanick/items/bb166929a58a4c20bb88)
* [** NEWER VERSION RELEASED** Java Is Still Free](https://medium.com/@javachampions/java-is-still-free-c02aef8c9e04)