2017年9月にリリースされたJava 9にはさまざまな新機能が追加されていますが,
10月1日から5日の5日間に渡って開催されたJavaOne 2017でも,
モジュール機能の追加に至る紆余曲折
Javaへのモジュール機能の追加に関する議論がスタートしたのは10年以上も前のことになります。Javaアプリケーションの多様化やJava仕様そのものの巨大化によって,
さて,
これが最終的にJava 9につながるわけですが,
Jigsawの仕様はこの8年の間に二転三転しています。Java 9リリースの直前にも,
モジュール機能によってできること
Project Jigsawによって何ができるようになるかということは,
- モジュール間の依存関係の明確化
- モジュールの公開範囲の設定
- バージョン設定
- 標準ライブラリのモジュール化
- 必要なモジュールのみを含むランタイムの作成
大雑把に言えば,
たとえば,
JDK 9には上記の他に,
最も基本的な事項のおさらい
それでは,
モジュールは,
- module - モジュールの宣言をする
- exports - 公開するパッケージを指定する
- requires - 依存するモジュールを指定する
次の図のコードでは,
コンパイルは下図の右下のように,
実行時には,
なお,
- 依存するモジュールが足りない場合は実行できない
- モジュールは循環依存になっていていはいけない
(AとBがお互いに依存し合うなど) - 1つのパッケージが複数のモジュールにまたがってはいけない