JDKの新しいリリースモデルの話を聴いてきた

はじめに

このページは、2018/6/23に行われた「名古屋Javaユーザグループ 2018年6月」の中で解説のあった、 JDKの新しいリリースモデルの話について、簡単にまとめたものです。

Oracle公式の回答ではないのと、私自信が意味を取り違えている可能性もあるため、 真偽はOracleの公式なりを参照してください。 (大体合ってるとは思いますが、念のため)

イベントページ:

ngo-java.connpass.com

伊藤さんのスライド公開は暫く時間かかると思うと仰られていたのでブログ書いたけど、
昼過ぎに公開されてたwww

まぁ書き始めちゃったので、自分も公開しますw

www.slideshare.net

JDKの今まで

8以前

f:id:syogo0417:20180625123147j:plain

Open JDKソースコードのみを公開していて、バイナリ自体は提供していないっていうのは知らなかった。 (どこかで聞いてたかもしれないけど、私の記憶にはない!)

Oracle JDKはOpen JDKをベースにして、有償ライブラリを追加した形でOracleコンパイルして配布しています。
基本的なコアコンポーネントには手を加えてないため、 標準機能はOpen JDKでもOracle JDKでもソースコードは同じである、ということを仰っておられました。

具体的には、Flight recorderやJavaFx、Appletなどなど。 標準パッケージではないものを使ってる場合は関係あるけど、標準パッケージ使ってれば関係ないですねー。 という印象を持ちました。

9から

f:id:syogo0417:20180625124208j:plain (写真がぼやけてて申し訳ないです・・・)

元々Oracleがセキュリティアップデートなどを頻繁に行ってきたけど、
Open JDK側へのフィードバックがなかなか同期的に行えておらず、
これが課題になってたようです。 (手を入れるのしんどそう)

JDKへのニーズとしては

  • 短期間のバージョンアップ
  • 1バージョンを長期間使いたい(LTS使いたい)
  • モダンに(コンテナとか仮想環境とか)
  • ドタバタしないで欲しい(リリース延期とか、リリース直前になって機能削る削らない、など)

というのがあり、これをOpen JDKOracle JDKで棲み分けた感じになっている。

OpenJDKで短期間のバージョンアップ、モダン化に対応していき、

Oracle JDKでは今まで通りエンタープライズ領域の利用を見込んで長期サポートを行っていく。

これから(11以降)

f:id:syogo0417:20180625125620j:plain

バージョン9、10は11への移行期間として取っていて、ここでOpen JDKOracle JDKソースコードを合わせている模様。

バージョン11がリリースされる段階では、Open JDKOracle JDKソースコードは同じになる。
※ちなみに、これまで有償サポート内容だった、Flight RecoderとかミッションコントローラなどはOpen JDKに入れて無償でも利用可能にするとのこと。

リリースサイクル

  • バージョンアップは半年に1回で9月と3月に実施し、これは今後死守していくとのこと。
  • 1つのバージョンの中にセキュリティアップデートなど、パッチの提供を2回行う。
  • LTSについては3年おきにリリースする

ソースについて

Open JDKOracle JDKは別物になっていく。

具体的には、

  • 11スタート時点~16までは同じ
  • 17のリリースから追加・削除される機能については11 LTSバージョンには反映しない
  • 17のリリース後も11に含まれる既存機能のセキュリティアップデートなどについては、11にもパッチが適応される
  • 17~23までは、17LTSのOracle JDKに関してはOpen JDKと同じ

こんな感じで続いていくらしいです。

LTSのサポーとは最低8年といってるので、大口の契約だと割と伸びたりもあるのかな?

うなっちゃうとエンジニアの数がいくらあっても足らないな~とか思ったりしました。

お値段

月額課金のサブスクリプション制を採用したとのことで、

  • サーバ:25ドル/1コア
  • クライアント:2.5ドル/1クライアント

サポート内容を考えると割と妥当な感じなのかな?といった感じです。 (あまりにも使われないと不採算でそのうち消滅するかもしれないけど、エンタープライズ分野でのご利用は需要は今後もあると思うので、大丈夫かな?)

仮想サーバについては後日発表とおっしゃってました。

ちなみにオートスケールする機能でOracle JDKを使う場合は、
オートスケールのプランの最大値に対してライセンスがかかるということなので、
オートスケールさせる用途のシステムだと、なかなかお高くなりそうです。

公式アップデート終了のスケジュール

f:id:syogo0417:20180625125707j:plain

8 -> 9の壁があるので、8は長めに取っていると言ってました。

今後はイントラに閉じたシステム以外はよっぽど11にしていくと思うので、 Jigsawの壁は計画的に超えた方が良さそうです。

その他

  • deplicated -> deleteのサイクルは最短1年
    今までみたいにほっとくと普通に死ぬ可能性が出てくるので、とっとと直した方が良いでしょう。
  • Open JDKバイナリは今のところtarで固めてるだけだけど、そのうちinstllerが付いて入れやすくなる。
  • パブリッククラウド上でOracle JDKがうまく動かない場面も出てくると思う、その場合はOpen JDKで回避することも出てくる可能性はある。
    (までは言わなかったけど、Oracle Cloud使えば動作確認済だから、Oracle JDK絶対動くよ!みたいなのは感じましたw)

最後に

Oracleに対して批判的な意見もあるけど、この発表聞いて思ったのは、
OracleJavaに対して超頑張ってるな~!て思いました。

あと単純に太っ腹だな、と。

リリースサイクルや課金体系は色々変わるけど、Open JDKOracle JDKのどっちを採用するかはプロジェクト次第ですね。

勿論Open JDKを使う場合は、リリースについていくためにテストコードとかCIは必須になっていくと思うので、
まだ取り組んでないJavaな会社は転換するか、お金で解決するかの2択は迫られるのではないかと!

では、よきJavaライフを~