JDK 9以降のJavaリリースとOracleJDKの変更
JDK 9以降のリリースとOracle JDKの変更に関するまとめ。「経緯」「何が変わるのか」「どう対応していくべきか」「リンク集」など。
経緯
流れとしては次のようになる。
2017-09-06 | Oracleのブログ「Faster and Easier Use and Redistribution of Java SE」でJavaのリリースとOracle JDKに関する変更を発表 |
2017-09-22 | OpenJDK 9リリース |
2017-10-02 | JavaOne 2017の基調講演でも発表され、大々的なアナウンスが始まる |
2017-10 ~ | さまざまなベンダーからJDKビルドの提供が発表され始める |
2018-03-20 | OpenJDK 10がリリース。OpenJDK 9のサポートが終了 |
2018-09-17 | 「Java Is Still Free」がリリースされる
|
2018-09-26 | 最初のLTSであるOpenJDK 11がリリース。OpenJDK 10のサポートが終了 |
2019-01(予定) | Oracle JDK 8の商用利用の無償アップデートが終了予定 |
2017年9月のJDK 9のリリースの直前ぐらいに発表されたブログが公式な起点と思われる。世界的にも変更の大きさや今後どうしていくべきかに戸惑いや誤解が見られた。「Javaが無償で使えなくなる」といった憶測などが広がり「Java Is Still Free」がリリースされるまでに至った。
最初のLTSにあたるJDK 11がリリースされる頃には、周知が進んだり、各JDKプロバイダーのサポート状況も見えてきたり、対応策の考え方や提案も進んだりしため、混乱は収拾に向かっている(と思う)。
何が変わるのか
変わることのまとめ。
Java(OpenJDK)がタイムラインリリースとなる
Javaのリリース方式が変わる。
- これまで
-
-
機能をそろえてリリース
-
機能がそろうまでリリース出来なかったので、リリースタイミングが不安定だった
-
-
- これから
-
-
6ヶ月ごとのリリース
-
機能がそろったらではなく、時間の経過でリリースする
-
これにより大きめの機能変更に引っ張られることなく、定期的にリリースされる
-
-
Oracleが2種類のJDKを提供して、これまでのOracle JDKは商用向け有償長期サポート用となる
Oracleは2種類のJDKを提供する。
- オラクルによるOpenJDKビルド
-
-
GPLで提供される
-
次のバージョンがリリースされるまでサポート
-
次のバージョンのリリースは6ヶ月後なので、1つのバージョンは6ヶ月間のみのサポートとなる
-
-
こちらのJDKではLTSがない(予定)
-
- Oracle JDK
-
-
これまで
-
無償で商用利用可能なJDKだった
-
次のバージョンが安定するぐらいまでの無償サポート
-
-
これから
-
商用向けに有償で長期サポートを行うためのJDKとなる
-
3年に一度LTS(Long-Term-Support)版が作られ、そのバージョンが長期サポートの対象になる
-
それ以外はnon-LTS版となり、次のバージョンがリリースされるまでのサポートとなる
-
参考: https://www.oracle.com/technetwork/jp/java/eol-135779-ja.html
-
-
Oracle JDKにしか無かった機能を順次OpenJDKへ移行させる(Oracle JDKとOpenJDKの差を無くすようにする)
-
そうすることで移行しやすくする
-
参考: https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later
-
翻訳: https://orablogs-jp.blogspot.com/2018/09/oracle-jdk-releases-for-java-11-and.html
-
Java 11時点でのOracle JDKとOpenJDKの差が書かれている
-
-
-
-
Oracle JDK 8のサポート期限
上記の変更を受けて、Oracle JDK 8のサポート期間についても次のように確定してきた。
オラクルカスタマーではない |
商用ユーザー |
2019-01まで |
個人ユーザー |
2020-12まで |
|
オラクルカスタマー |
Premier Support |
2019-01まで |
Extended Support |
2025-03まで |
これはサポートが打ち切られる期限なので、例えばサポートが打ち切られる前にダウンロードしたOracle JDKの利用は可能。ただし当然更新できない状態ではあるが…。
どう対応していくべきか
このセクションは私見(念のため強調)。
メジャーバージョンに対する考え方を変える
開発が進むのことはウェルカムだが1つのバージョンの期間がこれまでと比較すると極小になり、すぐにサポートが終わってしまう。なのでこれまでとのバージョンアップとは考え方を変えなくてはいけない。
基本的にはLTSのバージョンを中心に追っていく
次のように考えてみては。
-
LTSを中心に追っていく
-
(バージョン番号は上がるけれど)non-LTSはこれまでfeature releaseみたいなものと考える
-
参考: https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence
-
こちらのFAQにそんな話が載っている
-
-
躍起になって全てのバージョンアップを追う必要も無い。魅力的な機能がある場合にお試しするといったかんじだろうか。
特にプロダクトでnon-LTSを追うのが難しく、全部のバージョンを追っていくと新機能が含まれることで初期バグが発生しやすくなるリスクが(feature releaseより)高くなることが一般的には推測される。そう考えるとプロダクトとして安定しているものについてはLTSごとのアップデートで対応していった方が良いか…。
次のJDKを考える
これまで何となく長期間サポートしてくれた無償で商用利用可能なOracle JDKは無くなる。 なので、これまでのOracle JDKユーザーは次の選択が迫られる。
-
有償のOracle JDKを契約して使い続ける
-
Oracle JDK以外のJDKに移行する
無償で商用利用するJDKを求める場合はOracle JDK以外のJDKに移行するしかない。JDKを乗り換えることでJDKを無償で商用利用し続けることは可能で、次の理由から乗り換えもそこまで難しくない。
-
Oracle JDKとOpenJDKの差異がほとんど無くなる(はず)
-
無償で長期サポートのJDKを提供してくれるプロバイダが現れている
なので乗り換えの手間(動作確認など)やそれに付随する手順の変更などが受け入れられればOKなのだろう(それ自体が面倒ではあるかもしれないが…)。とはいえ、このJDK乗り換えに関する一連のマインドチェンジをあらゆる人にしてもらうのことが大変だろう。Oracle JDKユーザーはとても多いはずなので。
どのJDKへ移行するかの考え方については別記事にまとめる予定。
「Javaが無償で使えなくなる?」「OracleがJavaで金を取るようになった?」
「Javaが無償で使えなくなる」「OracleがJavaで金を取るようになった」みたいなことが言われた時期があったが、Oracle JDK以外のJDKに移行してもほとんど問題ないし、無償でJavaを利用する道は残っているので、Oracleは計画的に責任をコミュニティ(JDKプロバイダ)へ移そうとしているというような印象かな。次の行動からもそれがうかがえる。
-
Oracle JDKの機能をOpen JDKへ寄贈して、移行できる(しやすい)ようにしている
-
Oralce JDKとは全く別ライセンスであるGPLのOpen JDKビルドも提供している
とはいえもう少しアナウンス期間があればよかったのではと思ってしまうが…。
リンク集
- 2017-09-06 Faster and Easier Use and Redistribution of Java SE | Oracle Java Platform Group, Product Management Blog
- 2018-05-03 Update and FAQ on the Java SE Release Cadence | Oracle Java Platform Group, Product Management Blog
- 2018-09-11 Oracle JDK Releases for Java 11 and Later | Oracle Java Platform Group, Product Management Blog
- 2018-11-18 更新 Oracle Java SE サポート・ロードマップ
- JDKの新しいリリース・モデル、および提供ライセンスについて
- 2018-09-17 Java Is Still Free
- 伊藤さん JDK 新しいリリースモデル解説 (ver. 2.2)
- Stephen Colebourne氏 Java SE 11 Options(邦題: Java SE 11の選択肢)
Appendix A: 改訂履歴
-
v1.0, 2018-12-14: 初稿