モジュールシステムについて 【Java】

モジュールシステムというのが、SE9から導入されました。大まかにいうと、パッケージよりも上にモジュールという括りができまして、module-info.javaというモジュール定義ファイルに、自身のモジュールが公開するパッケージをexports ******;

という感じで指定して、そのモジュールが利用したいモジュールの名前をrequires *****;

という感じで指定します。Java SE11 Silverですとそれぐらいしか出題されなかったようですが、Goldではprovides, with, opens, usesというキーワードも問われるようです。

 

以前からあるリフレクションという、クラスの定義情報を調べることでインスタンスが具体的に何型かを知らなくても動作させることができる技術の関連で、公開はしないけれどリフレクションではアクセスできるようにするopensというキーワードもあります。公開を許可するモジュールを限定する時は、opens ****** to *******;という風にtoの後にモジュール名を書きます。toの後が複数の場合、カンマで区切ります。

 

usesは、SPI(サービスプロバイダーインタフェース)として利用するインタフェース名を書きます。

そして上記のSPIを実装するライブラリ側の準備として、ライブラリ側のmodulue-info.javaに、provides (SPIのインタフェース名) with (実装クラス名)を指定します。