カスタム検索
表示順:
Relevance
Relevance
Date
ウェブ
 
 
 

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でこのことが証明されている。

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

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

follow us in feedly


≪前の記事
Amazonプライムデーのサーバ障害、AmazonがOracleからAurora DBに乗り換えたのが原因ではない。Amazon CTOがCNBCの報道を否定


カテゴリ



Blogger in Chief

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

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

人気記事ランキング

  1. Amazonプライムデーのサーバ障害、AmazonがOracleからAurora DBに乗り換えたのが原因ではない。Amazon CTOがCNBCの報道を否定
  2. [速報]オラクル、2019年に東京と大阪にOracle Cloudの最新データセンターを開設へ。Oracle OpenWorld 2018
  3. Angular 7正式版リリース。バーチャルスクロール、ドラッグ&ドロップのサポートなど、6カ月ぶりのメジャーバージョンアップ
  4. TerraformやVaultなどHashiCorp主要製品のアップデートが相次ぎ発表。HashiConf'18
  5. オラクルの第二世代クラウドは「突破困難な防壁」と「自律型ロボット」の2つによって守られている。Oracle OpenWorld 2018
  6. Yahoo! JAPANが指紋認証などによるログイン実現。ID/パスワードを不要にするFIDO2対応が国内でついにスタート
  7. 「Windows Server 2019」正式版がついにリリース。ハイブリッドクラウドやコンテナ機能など強化
  8. Java 11正式版がリリース、本バージョンからOracle JDKのサポートは有償に。OpenJDKで無償の長期サポート提供は現時点で期待薄
  9. Cloud Foundry Foundationが「Eirini」プロジェクト発表。Diegoの代わりにKubernetesをオーケストレーションで利用可能に
  10. 日本では「ブロックチェーン」は過度な期待、「DevOps」は幻滅期、「ビッグデータ」は陳腐化へ。ガートナーが「日本におけるテクノロジのハイプサイクル」2018年版発表


新着記事 10本


PR - Books


fig

fig

fig