Javaはなぜ変わらなくてはならなかったのか。JavaOne改め「Oracle CodeOne」の基調講演で語られた理由。Oracle CodeOne 2018
米オラクルがOracle OpenWorld 2018と同時開催していたイベント「Oracle CodeOne 2018」は、昨年までJavaOneとして開催されていたイベントです。今年から「CodeOne」と名称が変わりました。
このイベントがJavaデベロッパーにとって最大のイベントであることに変わりはありません。初日の基調講演は「 The Future of Java Is Today」としてJavaの最新動向と今後が紹介されました。その内容をダイジェストで紹介しましょう。
Javaが迎えた変化の理由とは
Javaと言えばこの人。米オラクルJava Platform Groupチーフアーキテクト Mark Reinhold氏が基調講演に登壇。
この数年でJavaは3つの大きな変化を迎えた。
1つは、Javaを26のスタンダードモジュールに分割したこと。その後、Java EEとCORBAのモジューを削除し、モジュールは19になった。
いままで時間がかかり、いつになるか予想できなかったアップグレードのスケジュールを、6カ月後のタイムベースにした。
ポピュラーな言語の多くは年に一度以上新しい機能を追加してきている。Javaがこれらと競合するためには、より早く前進し続けなければならない。
また、Javaが登場した約25年前とは、アプリケーションのパッケージやデプロイの方法は変化し、クラウドやコンテナの利用やApp Storeなどが使われるようになった。
Javaがメインストリームでありつづけるためには、これらに対応しなければならない。
そしてモジュール化によってJavaは26のスタンダードモジュールに整理された。
これはもともとこれだけスパゲティのようにこんがらがったものからスタートしたのだ。
このモジュールシステムの実現によってJavaはプラットフォームとして柔軟になった。ほとんどのアプリケーションはこのすべてのモジュールを必要とするわけではないので、必要なモジュールだけを選んで使えばよい。
アプリケーション用のカスタムランタイムを作り、それをDockerコンテナなどでパッケージすることで、大幅に小さなイメージを作ることができる。
モジュラープラットフォームのもうひとつの利点は、よりセキュアになると言うことだ。またメンテナンスも容易になる。
モジュラープラットフォームによって、昨年、2つめの大きな変化がもたらされた。プラットフォームの機能を減らしたのだ。これはJavaの歴史の中で初めてだ、そう、少なくとも機能削減を目的としては。
Java 11でJava EE関連のモジュールとCORBA関連のモジュールを削除した。なぜかというと、これらはメンテナンスに手間がかかり、複数の脆弱性を抱えている、といった理由からだ。
これは破壊的変更にあたるが、こうしたことを行う場合には、少なくとも1リリース前には知らせるようにするし、これからも起きるだろう。
こうしたことでより早いペースでリリースできるようになった。そして6カ月ごとにフィーチャーリリースを出すようにした。
Javaはいまも無料で使える
各フィーチャーリリースは6カ月間サポートされる。そして3年ごとにLong Term Supportリリースを出す。
LTSを3年以上サポートするかどうかは、ディストリビューションベンダのニーズによってOpenJDKコミュニティが決めることになる。
OracleはOpenJDKビルドをGPLライセンスの下でリリースする。これはフィーチャーリリースの6カ月ごとにリリースされる。そして商用ライセンスの下でLTSのサポートも行う。
これは怖いように聞こえるかもしれない。しかしJavaはいまも無料で使えるのだ(Java is still free)。
Oracle JDKとOpenJDKは交換可能なものだ。
というのも、Oracleはこれまで商用版で提供していた主要な機能をすべてオープンソース化した。Java Flight Recorder、Java Mission Controlなどだ。
Javaの新しいリリースモデルにおける5つの誤解を解く
こうした大きな変更があったため、さまざまな誤解や混乱が生じているようだ。そこでこれらを解消するため、ここで「Javaの新しいリリースモデルにおける5つの誤解」を紹介したい。
1つ目。フィーチャーリリースごとに破壊的な変更が行われる。
これは真実ではない。変化したのはイノベーションを提供するペースであって、そこには大きなチャンスがある。
2つ目。LTSではないリリースは実験的リリースである。
間違い。LTSとそれ以外のリリースの違いは長期でサポートされるかどうかである。6カ月以上のサポートを望むなら、サポートしてくれるところを探すか、自身でサポートすることになる。
3つ目。古い機能が削除される場合、少なくとも3年前には告知される。なぜならLTSだけを使うつもりの人がいるから。
間違い。機能の削除にあたっては、適切なビルドにおいてコンパイル時かランタイムにワーニングが出る。
4番目。もしもそれほど頻繁にバージョンアップに対応しないシステムであれば、LTSではないリリースは無視していい。
これは実際にはよい方法とは言えないだろう。フィーチャーリリースごとにテストをしていけば、そのシステムは次のLTSへの準備ができているということになるからだ。
5番目。LTSではないリリースにおいては、6カ月を超えると無料ではアップデートは存在しないし、LTSにおいても3年を超える無料のアップデートはない。
間違い。これらはすべて、OpenJDKコミュニティにおけるオラクル以外のコントリビュータがどうするのかに依存するのだ。すでにJDK 6やJDK 7でこのことが証明されている。
アップデートやサポートでつねに思い出して欲しいのは、もしも純粋に最新のアップデートを受け取るのではない方法でしっかりとしたアップデートやサポートを受けたいのであれば、おそらく何らかの費用を支払う必要があるということだ。
そこには多くのソリューションプロバイダに関する選択肢があるし、彼らは長期的なプラットフォームへの投資に関する知識も備えているだろう。
あわせて読みたい
IBMがRed Hatの買収を発表。ハイブリッドクラウド戦略を強化
≪前の記事
Amazonプライムデーのサーバ障害、AmazonがOracleからAurora DBに乗り換えたのが原因ではない。Amazon CTOがCNBCの報道を否定