[速報]JavaOne開幕。Java 9は「Project Jigsaw」でクラスパスの問題とJDK肥大化の問題を解決する。JaveOne 2015

2015年10月26日

サンフランシスコでOracle OpenWorldと同時開催の「JavaOne 2015」が開幕しました。Javaが登場して20周年、19回目のJavaOneとなります。

基調講演ではJavaの歴史を振り返った上で、Oracle Java Platformチーフアーキテクト Mark Reinhold氏が来年にも登場する予定の次バージョンの「Java 9」で採用される予定の「Project Jigsaw」を紹介しました。

Mark Reinhod氏。

fig

Java 9では2つのことを解決しようとしている。1つはClaspath、もう1つは巨大なモノリシックとなったJDKだ。

fig

この2つの課題を1つの手段で解決しようと導入するのが「Module」で、それを進めているのが「Project Jigsaw」だ。

fig

classpathは「Jar hell」という言葉があるほど面倒を抱えている。例えばHadoopは7000ものソースファイルから構成されており、Classpathにこのようなワイルドカードを使っている。

fig

これを展開すると110ものパスになる。ここから1つ何かが消えても分からないよね?

fig

また、依存関係がコンフリクトを引き起こす可能性もある。使われている内部APIを変更しても大丈夫かどうかも分からない。

解決には、jarファイルの強力な抽象化機構が必要で、いま提案されているのが「Modules」だ。

Javaを見てみると、ステートメントや式として「Methods&Fields」があり、その上にそれらをグループ化する「Classes&Interfaces」があり、それらがまとまって「Packages」となる。

われわれはその上に、Packegeのコンテナとして「Modules」を提案している。Modulesは、ほかのModuleとどのように関係するかを記述できる。

fig

Moduleはこのように記述する。モジュール名と、なにに依存しているかを書き、どのパッケージをエクスポートするかを書く。

fig

Moduleを導入することで、パスが消えたり、コンフリクトを起こしたり、内部APIの変更が可能かどうかの判別などを解決できる。

Moduleはパッケージのコンテナであり、コンフィグレーションの信頼性と、強力なカプセル化を提供する。

fig

これは大きなプラットフォームの変化であり、浸透にはしばらく時間がかかるだろう。いきなり全員にmoduleの採用を押しつけることはない。過去のコードも走らせる必要がある。

Moduleはクラスパス地獄からの脱出策となると同時に、巨大でモノリシックなJDKの解決策にもなる。

JDKをモジュールに分割することで、小さなデバイスからクラウドの上までJDKをスケールさせることができるようになると同時に、JDKをメンテナンスしやすくし、セキュアな状態を保ちやすくする。

モジュール化により、いずれJDKの内部APIはカプセル化されアクセスできなくなるがJava 9では広く使われている内部APIなどはそのまま利用できるようにするつもりだ。

Moduleは、例えばLambdaのような言語の強化ではなく、シートベルトのようなもので、安全により速く進むためのものだ。

fig

JavaOne 2015

Oracle OpenWorld 2015

このエントリーをはてなブックマークに追加
follow us in feedly

タグ : Java , Oracle



≫次の記事
Java 9の先、Java 10/11では最新のハードウェアやOSに最適化したデータのメモリ配置が可能になる。JavaOne 2015
≪前の記事
米HP、パブリッククラウドから撤退し、マネージドサービスと仮想プライベートクラウドへ注力。「HP Helion Public Cloud 」は来年1月で終了へ

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


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



Publickey 最新記事 10本

Publickey Topics 最新記事 10本


PR - Books


fig

fig

fig

fig



blog comments powered by Disqus