Javaはなぜ変わらなくてはならなかったのか。JavaOne改め「Oracle CodeOne」の基調講演で語られた理由。Oracle CodeOne 2018

2018年10月29日

米オラクルがOracle OpenWorld 2018と同時開催していたイベント「Oracle CodeOne 2018」は、昨年までJavaOneとして開催されていたイベントです。今年から「CodeOne」と名称が変わりました

このイベントがJavaデベロッパーにとって最大のイベントであることに変わりはありません。初日の基調講演は「 The Future of Java Is Today」としてJavaの最新動向と今後が紹介されました。その内容をダイジェストで紹介しましょう。

Javaが迎えた変化の理由とは

Javaと言えばこの人。米オラクルJava Platform Groupチーフアーキテクト Mark Reinhold氏が基調講演に登壇。

Oracle CodeOne fig1

この数年でJavaは3つの大きな変化を迎えた。

1つは、Javaを26のスタンダードモジュールに分割したこと。その後、Java EEとCORBAのモジューを削除し、モジュールは19になった。

いままで時間がかかり、いつになるか予想できなかったアップグレードのスケジュールを、6カ月後のタイムベースにした。

Oracle CodeOne fig2

ポピュラーな言語の多くは年に一度以上新しい機能を追加してきている。Javaがこれらと競合するためには、より早く前進し続けなければならない。

また、Javaが登場した約25年前とは、アプリケーションのパッケージやデプロイの方法は変化し、クラウドやコンテナの利用やApp Storeなどが使われるようになった。

Javaがメインストリームでありつづけるためには、これらに対応しなければならない。

そしてモジュール化によってJavaは26のスタンダードモジュールに整理された。

Oracle CodeOne fig3

これはもともとこれだけスパゲティのようにこんがらがったものからスタートしたのだ。

Oracle CodeOne fig4

このモジュールシステムの実現によってJavaはプラットフォームとして柔軟になった。ほとんどのアプリケーションはこのすべてのモジュールを必要とするわけではないので、必要なモジュールだけを選んで使えばよい。

Oracle CodeOne fig5

アプリケーション用のカスタムランタイムを作り、それをDockerコンテナなどでパッケージすることで、大幅に小さなイメージを作ることができる。

モジュラープラットフォームのもうひとつの利点は、よりセキュアになると言うことだ。またメンテナンスも容易になる。

モジュラープラットフォームによって、昨年、2つめの大きな変化がもたらされた。プラットフォームの機能を減らしたのだ。これはJavaの歴史の中で初めてだ、そう、少なくとも機能削減を目的としては。

Java 11でJava EE関連のモジュールとCORBA関連のモジュールを削除した。なぜかというと、これらはメンテナンスに手間がかかり、複数の脆弱性を抱えている、といった理由からだ。

これは破壊的変更にあたるが、こうしたことを行う場合には、少なくとも1リリース前には知らせるようにするし、これからも起きるだろう。

こうしたことでより早いペースでリリースできるようになった。そして6カ月ごとにフィーチャーリリースを出すようにした。

Javaはいまも無料で使える

各フィーチャーリリースは6カ月間サポートされる。そして3年ごとにLong Term Supportリリースを出す。

Oracle CodeOne fig6

LTSを3年以上サポートするかどうかは、ディストリビューションベンダのニーズによってOpenJDKコミュニティが決めることになる。

OracleはOpenJDKビルドをGPLライセンスの下でリリースする。これはフィーチャーリリースの6カ月ごとにリリースされる。そして商用ライセンスの下でLTSのサポートも行う。

Oracle CodeOne fig7

これは怖いように聞こえるかもしれない。しかしJavaはいまも無料で使えるのだ(Java is still free)。

Oracle CodeOne fig8

Oracle JDKとOpenJDKは交換可能なものだ。

というのも、Oracleはこれまで商用版で提供していた主要な機能をすべてオープンソース化した。Java Flight Recorder、Java Mission Controlなどだ。

Javaの新しいリリースモデルにおける5つの誤解を解く

こうした大きな変更があったため、さまざまな誤解や混乱が生じているようだ。そこでこれらを解消するため、ここで「Javaの新しいリリースモデルにおける5つの誤解」を紹介したい。

Oracle CodeOne fig9

1つ目。フィーチャーリリースごとに破壊的な変更が行われる。

これは真実ではない。変化したのはイノベーションを提供するペースであって、そこには大きなチャンスがある。

2つ目。LTSではないリリースは実験的リリースである。

間違い。LTSとそれ以外のリリースの違いは長期でサポートされるかどうかである。6カ月以上のサポートを望むなら、サポートしてくれるところを探すか、自身でサポートすることになる。

3つ目。古い機能が削除される場合、少なくとも3年前には告知される。なぜならLTSだけを使うつもりの人がいるから。

間違い。機能の削除にあたっては、適切なビルドにおいてコンパイル時かランタイムにワーニングが出る。

4番目。もしもそれほど頻繁にバージョンアップに対応しないシステムであれば、LTSではないリリースは無視していい。

これは実際にはよい方法とは言えないだろう。フィーチャーリリースごとにテストをしていけば、そのシステムは次のLTSへの準備ができているということになるからだ。

5番目。LTSではないリリースにおいては、6カ月を超えると無料ではアップデートは存在しないし、LTSにおいても3年を超える無料のアップデートはない。

間違い。これらはすべて、OpenJDKコミュニティにおけるオラクル以外のコントリビュータがどうするのかに依存するのだ。すでにJDK 6やJDK 7でこのことが証明されている。

アップデートやサポートでつねに思い出して欲しいのは、もしも純粋に最新のアップデートを受け取るのではない方法でしっかりとしたアップデートやサポートを受けたいのであれば、おそらく何らかの費用を支払う必要があるということだ。

そこには多くのソリューションプロバイダに関する選択肢があるし、彼らは長期的なプラットフォームへの投資に関する知識も備えているだろう。

あわせて読みたい

Java プログラミング言語 Oracle




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本