現在の状況
2018年2月8日に、Java SEのサポート状況に激震が走っていることを記事にしました。
2018年にJavaを利用している人は全員理解すべきことを説明してみる(追記あり) - orangeitems’s diary
記事を出した段階から変化したことは、以下の3点です。
1)Oracleより、2018/6/21にJava SE Subscriptionというモデルが発表され、金額の支払い方がシンプルになったこと。また、この中でJava SE 8の2025年までのサポートが明言されていること。
2)RedHatが、OpenJDK8のサポートを2023/6に終了し、並行してOpenJDK11を長期サポートする旨を発表したこと
3)OpenJDKのLTSサポートの実現はまだ明言されていない。しかし、OracleはセキュリティーパッチはLTSと同様の物を取り込む支援をすると言っている(明言はしていない)。
4)Oracle Java 11より、ライセンスの内容が変更となり、非商用・開発用途でしかりようができなくなりました。
5)AWSが、Amazon CorrettoというOpenJDKのバイナリをリリースすることがわかりました。
6)IBMが、2025年までは少なくともJava 8ユーザーをサポートしていくと宣言しました。
[1] OpenJDKのLTS版の情報
OpenJDK11についてはLTS版(long term support)としてリリースされるのではという噂がありましたが、どこからも確たる情報はありません。もはや言葉遊びですが、Oracle JDK 11がリリースされるときにはOpenJDK 11も同時にリリースされます。Oracle JDK 11はこのときは有償サポートがないと手に入りません。有償サポートのなかで更新版が出続けるなら、OpenJDK11も更新されるんじゃないか?、というのは期待であって、これを裏付ける情報は現時点ではありません。
ただ、わざわざOracle JDKとして商業版のみにLTSを提供すると表明しながら、一方で全く同じものをOpenJDKとして無償ダウンロードできるというのは考えにくいのではないかと個人的には思います。11がリリースされるのは2018年9月です。この時点までは何らかの見解がOpenJDKコミュニティーから発表されると思います。
OracleからOpenJDKコミュニティーをサポートし、セキュリティーパッチだけはOracle JDKから取り込めるようにしたいという発言がありました。
→(最新情報)現時点でどうなるかわからない。OpenJDKの見解を待つしかない。不安なら、Oracle JDK SE Subscriptionを検討するか、RedhatがリリースしているOpenJDKのサポートを受ける。
[2] Red Hat社の情報
Red Hat社が、RedHat Linux Enterprize LinuxにバンドルされているOpenJDKは、OSをサポートしている限りサポートしてくれるだろうという目論見の方もいらっしゃると思います。
Red Hat社のOpenJDKのサポートポリシーは以下にあります。
OpenJDK ライフサイクルおよびサポートポリシー - Red Hat Customer Portal
この通り、2023年6月までOpenJDK8を使い続けることができます。それ以降は、OpenJDK11を使うようにとの内容です。
OpenJDK 11についての長期サポート提供については、2018年6月4日に発表がありました。
Red Hat OpenJDK 11 Advice - Red Hat Customer Portal
→(最新情報)2023年6月までに、OpenJDK8から、OpenJDK11へ乗せ換えること。Redhatの長期サポートが得られる。
[3] JDK8からJDK11への乗り換え期間がタイトすぎる
おそらく海外でも同じ状況だろうと思いまして、開発者の掲示板をのぞいてみたら非常に興味深い議論がありました。
JDK 10: General Availability | Hacker News
> Java8 won't be supported after January 2019, Java11 (LTS) will be release in September this year.
Are they dropping support for the latest LTS just four month after releasing a new LTS? That sounds a bit harsh.
つまり、Java8(LTS)は2019年1月にサポートを切る、新しいLTSであるJava11は2018年9月リリース。ということは、「4か月しかサポートが重複している期間がない。これはひどいね。」と言っています。
確かに、世の中でたくさん動いているJDK8のアプリがあるとして、JDK9に乗せ換える期間は4カ月しか用意されていないということになります。
もし有償のOracle JDKのPremir Supportに入れれば、Java 8は2022年3月まで延命できますので、これをOracleは狙っているのかもしれません。
また、2018/6/21に発表されたJava SE Subscriptionにおいては、2025年までのサポートを宣言しています。
→(最新情報)乗せ換えの期間が限られ過ぎている。非LTSだと11日間。LTSでも4カ月間。現実的には、Java SE Subscriptionに入り、2025年まで延命するという線が現実的となってきた。
[4] Oracle Java 11からライセンスの内容が変更に
下記にまとめてあります。
(重要)Oracle Java 11から、ライセンス契約の内容がガラリと変わっています | 無償利用は非商用・開発用途のみ - orangeitems’s diary
サポート期間うんぬんより、こちらの方がおおごとだと思います。
Oracle Java 11は、もう完全に商用ソフトウェアであり、ダウンロードできるものは開発限定に過ぎないものと言うことを理解する必要があります。
[5] AWSの新しい動き
下記にまとめてあります。
OpenJDK完全互換、Amazon Correttoは信用できるのか - orangeitems’s diary
本文の通り、AWSへの依存度を深めても問題ないという経営的な判断ができるのであれば、有力な選択肢になると思います(インフラ基盤をAWSにするなど)。
[6] IBMが改めて宣言
下記にまとめてあります。
IBMがJava 8を「少なくとも2025年までは確実にサポートする」とアピール - orangeitems’s diary
結局RedHatがIBM傘下になることから、Javaに関してはIBM/RedHat陣営がこれまで以上にイニシアティブを発揮する環境が整い始めたと思います。
まとめ
OpenJDKを選んでもLTSがどうなるか不明であること。Red Hat社はOpenJDK8を延命しつつOpenJDK11をサポートすること。また、2018年9月26日にリリースされたOracle Java 11は完全に商用ソフトウェアです。これまでのように気軽に無償で使えるものではありません。
追記1
もしかしたら一件落着となる可能性あり?
これは6カ月間過ぎてみないと何とも言えません。
追記2
Java Day Tokyo 2018では新しい情報無し。
追記3
大きいニュースでした。
追記4
節目の2018年9月を踏まえて記事を追加しています。
追記5
Java is still Freeというドキュメントに対する意見です。
追記6
いつの間にか伸びていたRed HatのOpenJDKサポート終了日。