前々回より、Java SE 9の注目機能であるProject Jigsawを取り上げています。前回は、Project Jigsawのモジュールを作成し、モジュールを使うところまで駆け足で紹介しました。

 今回は、もう少し詳しくモジュールを見ていくことにしましょう。

 その前に、簡単に前回のおさらいです。

 Project Jigsawで仕様策定されているモジュールは、今までのJARファイルと異なり自分自身に関する情報を記述できるようになりました。主な情報として、以下の2項目があります。

  • 依存性
  • 公開可能範囲

 これらの情報はソースのルートディレクトリに配置するmodule-info.javaに記述します。

 モジュールは今までの互換性から、JARファイルで提供されます。しかし、コンパイルや実行にはクラスパスではなく、モジュールパスを使用します。モジュールパスは、個々のJARファイルを指定するのではなく、モジュールのJARファイルを配置したディレクトリ単位で指定します。

 さて、今回は既に存在するモジュールを見ていくことから始めましょう。既に存在しているモジュールというのは、JREのモジュール群です。

標準モジュール

 JREで提供される標準のモジュールは、Javaで作成するアプリケーションであれば、必ず使用しなくてはいけません。とはいっても、Java SE 8までのようにrt.jarという巨大なJARファイルで提供されているわけではありません。

 標準ライブラリーも用途に合わせて、分割され、それぞれがモジュール化されています。

 標準で提供されているモジュールの一覧を調べるには、javaの起動オプションとして-listmodsを指定します。

  

C:\demo>java -listmods
java.activation@9-ea
java.annotations.common@9-ea
java.base@9-ea
java.compact1@9-ea
java.compact2@9-ea
java.compact3@9-ea
java.compiler@9-ea
java.corba@9-ea
java.datatransfer@9-ea
java.desktop@9-ea
java.httpclient@9-ea
java.instrument@9-ea
java.jnlp@9-ea
java.logging@9-ea        
    <<以下、省略>>

  

 -listmodsオプションで出力されるモジュールは92あります。

 モジュールはモジュール名と、@の後にバージョンが付記されて出力されます。9-eaと表記されているのは、Java SE 9のEarly Accessであることを示しています。

 これらのモジュールはJDKをインストールしたディレクトリの直下にあるjmodsディレクトリに配置されています。