Works by

Ren's blog

@rennnosuke_rk 技術ブログです

【Java】AdoptOpenJDK 11がLTSをサポート

Javaのサポートについて

OracleJavaへのサポート体制の変更が波紋を呼んでいます。

qiita.com

www.orangeitems.com

Oracle JDK 11の有償化

Oracle Java SE サポート・ロードマップ

事の発端は、OracleJava 11の提供を有償化する声明を出したことでした。

Oracleは今まで、Javaのバージョンを約3年ごとにリリースし、約5年ごとのサポート期間を設けていました(Long Term Support、LTS)。
例えば、

  • Java 6 (Update 10)・・・2008年10月22日にリリース
  • Java 7 ・・・・2011年7月28日にリリース(約5年後の2015年4月30日にサポート終了)

となっています。

しかし、Oracleは2017年9月にリリースされたJava9以降6ヶ月ごとにリリースを行うスタイルに変更します。 同時に、次回verがリリースされるのと同時に、前回verのサポートを打ち切る方針に転換しました(Feature Release Model)。

  • Java9 ・・・2017年9月21日にリリース(2018年3月にサポート終了)
  • Java10・・・2018年3月20日にリリース(2018年9月にサポート終了)

すなわち、Oracle Javaを今後使っていく人は早いサイクルでアップデートをし続けなくてはならない、という流れになりつつありました。 本来であれば、セキュリティや新機能実装の観点からこまめなアップデートは推奨されるべきなのですが・・・。 中~大規模なシステムだとアップデート作業やテスト、デグレ解消に結構な工数がかかるので、長期間安定して使えるJDKが欲しいというのが実情だと思います。

ところが2018年9月、OracleJava 11がリリースを決定したのですが、Java 11 の商用利用を有償化し、同時にLTSとすると発表したのです。
システム運用等の業務でJavaを使っている人からすれば長期サポートは嬉しいのですが、いきなりの有償化宣告に対応する余裕はありません。
なんとかして無償でJavaを使い続けられる環境を維持したいものです。

ちなみにJava8はサポート期限が2019年1月とJava9よりもあとまでのサポートとなっています。
期間的にはだいぶ長めですが、来年頭にはサポートが切れるので同様の対応が必要になります。

f:id:rennnosukesann:20180624000254p:plainOracle 公式より引用)

Java8~10の刻々と迫るサポート期間、Java11 LTS の有償化にJava界隈がざわついていました。

OpenJDK

OpenJDK

OpenJDKはその名の通り、Javaプラットフォームをオープンソース化したものです。
OpenJDKの実装にはOracleも参画しており、商用にも耐えうる実装であると考えられます。実際、OracleはOpenJDKの2018年の最新バイナリをOracle JDKに統合した上で、今後のOracle JDKを運用していく旨を発表しています。またオラクルの声明では以降無償Javaを利用するにはOpenJDKを使ってねとも言っています。

こちらのJDKであれば無償で使うことができますね!

・・・と思いきや、OpenJDKはLTSをサポートしていません。
つまり、OpenJDKを利用する場合、6ヶ月ごとにJDKのバーションをアップデートしなければならなくなります。 ここで再びFeature Release Modelの問題が発生します。
無料で、かつLTSなJDKが欲しい・・・!

AdoptOpenJDK 11

そんな中、AdoptOpenJDKが興味深いサポートライフサイクルを提示していました。

adoptopenjdk.net

AdoptOpenJDKはIBMRedHat、SAP、オラクル等に所属するメンバーが参画するOpenJDKコミュニティーです。 OpenJDKのビルドを提供します。 彼らの提供するJava 11のJDKは、無償かつLTSとのことでした。

adoptopenjdk.net

12以降はどうなるかわかりませんが、少なくともJava 11を3年間サポートを受けながら使えるようですね。素晴らしいです!

ただ、公式のgithubのissueでビルドできないとの報告も上がっており、少々不安も感じさせます。

github.com

OpenJDK でも Java 11 をLTS化?

orangeitemsさんの記事に最新情報があがっていました。

また、Redhatの姿勢が明らかになっています。2018/6/4に、RedHat社は、OpenJDK8のサポート終了後は、OpenJDK11をリリースしこれをLTS(長期サポート)すると明言しました。
Red Hat OpenJDK 11 Advice - Red Hat Customer Portal
RHELでOpenJDK8を動かしているのであれば、11への移植をお勧めします。
https://www.orangeitems.com/entry/2018/02/08/152022 より引用

どうやら、RedHatが公式にOpenJDK 11をLTS化することを発表したようです。
リンク先の記事を参照したかったのですが、subscription専用なので読み進められない・・・

これが本当であれば、今後の無償JavaOracleの声明どおりOpenJDK一択となりそうです。

参考

www.publickey1.jp

www.orangeitems.com

Oracle Java SE サポート・ロードマップ

qiita.com

OpenJDK