Java 環境のリリースとサポートに関する覚え書き
先日 Java のリリースサイクルとサポートについて訊かれたのだが,1年半近く Java から離れていたこともあって,まったくノーチェックだった。 そこで,改めて Java 環境について調べてみることにした。
この記事はその時の覚え書きとして残しておく。 なお,特にこの記事では嘘や間違いがあればフィードバック等いただけると有り難い。 Oracle の料金体系とかイマイチよく分かっていないのだ。
Java 9 は後方互換性がない?
2017年9月にリリースされた Java 9 の最大の特徴は Project Jigsaw の成果が取り込まれモジュール化に対応したことだが,他にも
ということで,これまで保証されていた後方互換性(backward compatibility)はなくなってしまった。 したがって Java 9 以降へのアップグレードについては十分な調査と場合によっては改修作業が必要になる。
- Java Platform, Standard Edition Oracle JDK 9 Migration Guide, Release 9
- Oracle JDK 8にあってOpenJDKにない機能 - Qiita
- Java 8でも安心。Dockerに対するCPU・メモリ対応。(2018年11月現在) - Mitsuyuki.Shiiba
Java 8 の無償サポートは2019年1月まで
一方, Java 8 の無償サポート期間が2019年1月までとなっていて期限が迫っている1。 有償サポートは Java SE Advanced の Named User Plus2 で2,460円/ユーザ, Processor License3 で132K円/コアとなる。
Java のリリースサイクル
Java 9 以降は6ヶ月毎に機能の追加・変更を含むメジャー・バージョンアップが行われる。 また1月,4月,7月,10月にバグや脆弱性の修正を含むマイナー・バージョンアップが行われる。
月 | バージョンアップ・イベント |
---|---|
1月 | マイナー・バージョンアップ |
2月 | |
3月 | メジャー・バージョンアップ |
4月 | マイナー・バージョンアップ |
5月 | |
6月 | |
7月 | マイナー・バージョンアップ |
8月 | |
9月 | メジャー・バージョンアップ |
10月 | マイナー・バージョンアップ |
11月 | |
12月 |
マイナー・バージョンアップは基本的に現行メジャー・バージョンに対してのみ行われ,過去のバージョンについてはサポート外となる。 ただし LTS (Long Term Support) 対象のバージョンについては新バージョン・リリース後もサポートが行われる。 (LTS については次節で解説)
Oracle Java と OpenJDK
Java および JDK (Java Development Kit) の実装としては Oracle Java と OpenJDK が双璧と言える。 また Oracle は JDK を GPL ライセンスでオープンソース化し OpenJDK との統合を行っている。
今のところ Oracle Java と OpenJDK は協力関係にあり Java 9 以降の各バージョンのリリースを同時期に行うことになっている4。 リリース時期とサポート期間は以下の通り。
Oracle Java | OpenJDK | |
---|---|---|
Java 9 | 2017年9月 - 2018年3月 | 2017年9月 - 2018年3月 |
Java 10 | 2018年3月 - 2018年9月 | 2018年3月 - 2018年9月 |
Java 11 | 2018年9月 - 2026年9月5 | 2018年9月 - 2019年3月 |
Java 12 | - | 2019年3月 - 2019年9月 |
Java 13 | - | 2019年9月 - 2020年3月 |
Java 14 | - | 2020年3月 - 2020年9月 |
Java 15 | - | 2020年9月 - 2021年3月 |
Java 16 | - | 2021年3月 - 2021年9月 |
Java 17 | 2021年9月 - 2029年9月5 | 2021年9月 - 2022年3月 |
Oracle Java は Java 11 以降は有償の LTS のみとなる。 LTS 対象のバージョンは3年毎にリリースされるが,サポートは(メジャー・バージョンアップしなくてもお金さえ払えば)継続可能である。
OpenJDK はオープンソース(GPLv2 + Classpath Exception)なのでそれ自体にサポート料金は発生しないが(ディストリビュータ等が有償でサポートを請け負う場合は別),サポート期間が(次のメジャー・バージョンがリリースされるまでの)半年のみとなる。
- Oracle Java SE サポート・ロードマップ
- OracleがJDKの全ての機能をオープンソース化し、Java EEの欠点に取り組む計画を発表した
- 来月にはJava 10が登場し、9月にはJava 11が登場予定。新しいリリースモデルを採用した今後のJava、入手方法やサポート期間はこう変わる(OpenJDKに関する追記あり) - Publickey
Java 関連のサービスやアプリケーション
Java 関連のサービスやアプリケーションについて以下にメモ書きしておく。 随時加筆・修正する予定。
IDE (Integrated Development Environment)
もっとも有名な IDE である Eclipse については Oxygen.1a で正式に Java 9 をサポートしているようだ。
- Configure Eclipse for Java 9 - Eclipsepedia
- Eclipse Oxygen.1a is out — with support for Java 9 and JUnit 5 - JAXenter
- Eclipse 4.7 Oxygen 新機能 30+ / Java 9 を試そう! - Qiita
Eclipse のプラグインが Java 9 に追従しているかどうかは調査する必要がある。 現在 Eclipse のリリースサイクルは1年(毎年6月頃)であり,今後の Java のリリースサイクルに追従できない可能性もあるが,どうなっているのだろう。
もうひとつの有名な IDE として IntelliJ IDEA があるが,こちらも Java 9 への対応はできているようだ。
Java 9 Ready な FOSS
Quality Outreach より。 (自己申告らしいので他にもあるかもしれない)
- Akka, Lightbend
- Apache Derby
- Apache Log4j
- Apache Lucene/SOLR
- Apache Maven
- Apache Kafka
- Apache PDFBox
- Apache POI
- BootstrapFX
- bt
- Byte Buddy
- CruiseControl
- Eclipse Collections
- EqualsVerifier
- GraphHopper
- HeapStats
- Hibernate
- Ikonli
- Jackson
- JaCoCo
- JITWatch
- jOOQ
- JOSM
- JSilhouette
- JUnit 5
- Lillith
- LWJGL
- Mockito
- Rapidoid
- RedHat Wildfly
- RxJava
- Spotbugs
- Spring Framework
- Woodstox
Apache Tomcat は Java 9 Ready じゃない?
ブックマーク
- ヌーラボのアカウント基盤を Java 9 にマイグレーションして起きた問題と解決法 | ヌーラボ
- Java9勘所集 - Qiita
- Java 9のモジュール機能「Project Jigsaw」の基本を紹介 (1/2):CodeZine(コードジン)
- 第2回 JDKの新しいリリースモデルに要注目 OpenJDKとOracle JDKの違いにも注意が必要[JavaOne 2017]:Java 9のその先へ~JavaOne Conference 2017レポート|gihyo.jp … 技術評論社
- Javaエンジニアが Java 11 リリースに向けて備えておくべきこと - Qiita
- AWSが独自のOpenJDK「Amazon Corretto」発表。AWS内部で使っていたJavaを外部提供へ。Java 8は2023年まで、Java 11は2024年まで無償でLTSを提供 - Publickey
- Red Hat、Windows版OpenJDKの長期商用サポート提供を発表 - Publickey
- Java 7、Java 8、Java 11、Java 12の新元号対応アップデートが4月16日に登場予定。オラクルが発表 - Publickey :
www
- 「Oracle Java」のライセンスが変更 ~無償利用は個人での開発・テスト・デモ目的のみに - 窓の杜
- Java EE 8フル互換の「Jakarta EE 8」がEclipse Foundationから正式リリース。これからはクラウドネイティブのためのフレームワークへと進化する - Publickey
- AdoptOpenJDKプロジェクトがEclipse Foundationへの合流を発表。合流後の新プロジェクト名は「Eclipse Adoptium」に - Publickey
- AWS、「Java 8」を2026年まで、「Java 11」は2027年まで、現行より3年サポート期間延長を発表。独自JavaディストリビューションのCorretto 8とCorretto 11で - Publickey
- OpenJDKと各種JDKディストリビューションの情報源まとめ
-
ただし「個人で Java SE を利用する(non-corporate desktop use)場合、2020年12月末まで引き続きアップデートを受け取ることができます」。 ↩︎
-
Named User Plus は利用するユーザ数に応じて料金がかかる。サポート料金とは別に12K円/ユーザ必要。 ↩︎
-
Processor License は Web サービスなど不特定多数のユーザが利用する場合のライセンス。なお MPU 単位ではなくコア単位になるため,コア4つの MPU なら料金は4倍になる。サポート料金とは別に600K円/コア必要。単一コア単一プロセッサのみの構成ならユーザ数が50人を超えれば Processor License のほうが割安になる。 ↩︎
-
ただし開発の主導権は Oracle 側が握ってる印象。 OpenJDK では,メジャー・バージョンのアナウンスはあれど,不具合や脆弱性に関する周知プロセスが皆無なので,結局のところ Oracle の動向を見ないと何も分からない。これで Oracle が LTS に入ったらどうするつもりなのか… ↩︎
-
5年間の Premier Support および3年間の Extended Support を併せた期間。更に延長する場合は Sustaining Support の契約が必要。 ↩︎ ↩︎