[速報]JavaOne開幕。Java 9は「Project Jigsaw」でクラスパスの問題とJDK肥大化の問題を解決する。JaveOne 2015
サンフランシスコでOracle OpenWorldと同時開催の「JavaOne 2015」が開幕しました。Javaが登場して20周年、19回目のJavaOneとなります。
基調講演ではJavaの歴史を振り返った上で、Oracle Java Platformチーフアーキテクト Mark Reinhold氏が来年にも登場する予定の次バージョンの「Java 9」で採用される予定の「Project Jigsaw」を紹介しました。
Mark Reinhod氏。

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

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

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

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

また、依存関係がコンフリクトを引き起こす可能性もある。使われている内部APIを変更しても大丈夫かどうかも分からない。
解決には、jarファイルの強力な抽象化機構が必要で、いま提案されているのが「Modules」だ。
Javaを見てみると、ステートメントや式として「Methods&Fields」があり、その上にそれらをグループ化する「Classes&Interfaces」があり、それらがまとまって「Packages」となる。
われわれはその上に、Packegeのコンテナとして「Modules」を提案している。Modulesは、ほかのModuleとどのように関係するかを記述できる。

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

Moduleを導入することで、パスが消えたり、コンフリクトを起こしたり、内部APIの変更が可能かどうかの判別などを解決できる。
Moduleはパッケージのコンテナであり、コンフィグレーションの信頼性と、強力なカプセル化を提供する。

これは大きなプラットフォームの変化であり、浸透にはしばらく時間がかかるだろう。いきなり全員にmoduleの採用を押しつけることはない。過去のコードも走らせる必要がある。
Moduleはクラスパス地獄からの脱出策となると同時に、巨大でモノリシックなJDKの解決策にもなる。
JDKをモジュールに分割することで、小さなデバイスからクラウドの上までJDKをスケールさせることができるようになると同時に、JDKをメンテナンスしやすくし、セキュアな状態を保ちやすくする。
モジュール化により、いずれJDKの内部APIはカプセル化されアクセスできなくなるがJava 9では広く使われている内部APIなどはそのまま利用できるようにするつもりだ。
Moduleは、例えばLambdaのような言語の強化ではなく、シートベルトのようなもので、安全により速く進むためのものだ。

Creating a module system to address needs, is a long-term investment in the platform! #javaone @java #JavaOne2015 https://t.co/ODbja02bnA
— JavaOne Conference (@JavaOneConf) 2015, 10月 25
JavaOne 2015
- [速報]JavaOne開幕。Java 9は「Project Jigsaw」でクラスパスの問題とJDK肥大化の問題を解決する。JaveOne 2015
- Java 9の先、Java 10/11では最新のハードウェアやOSに最適化したデータのメモリ配置が可能になる。JavaOne 2015
- Java20周年を祝ってJavaOneにスコット・マクニーリ氏がスペシャルメッセージ。「Javaプログラマにとって最悪な10のコト」を発表。JavaOne 2015
Oracle OpenWorld 2015
あわせて読みたい
Java 9の先、Java 10/11では最新のハードウェアやOSに最適化したデータのメモリ配置が可能になる。JavaOne 2015
≪前の記事
米HP、パブリッククラウドから撤退し、マネージドサービスと仮想プライベートクラウドへ注力。「HP Helion Public Cloud 」は来年1月で終了へ