Java プログラミング

モジュール(java)

モジュールとは

複数のパッケージをまとめて管理する単位のことを『モジュール』と呼ぶ。パッケージ単位の情報隠蔽を実現するのがモジュールシステムの目的である。

モジュール作成

モジュール用のディレクトリを作成し、そのディレクトリにmodule-info.javaというファイルを作り、その他のソースファイルとコンパイルする。

module-info.javaには、以下の2点を記述する。

・どのパッケージを公開するか
・ほかのどのモジュールを使うか
 command
module test {
  exports com.test;  //exports パッケージ名
  requires foo;  //requires モジュール名
}

 

モジュール化(コンパイル)

モジュール化するには、module-info.javaとソースファイルをコンパイルする。コンパイル時には、javacコマンド-dオプションを使う。

<構文>

 command
javac -d クラスファイルの出力先ディレクトリ コンパイルするファイルのパス

 

<例>

 command
javac -d mods/test src/test/module-info.java src/test/com/sample/Main.java

 

モジュールの実行

モジュールの実行には、javaコマンド--module-pathオプションモジュールを探すためのモジュールパスを指定し、-mオプションで実行したいクラスを指定する。

<構文>

 command
java --module-path モジュールのルートディレクトリ -m 実行したいモジュールのクラス

<例>

 command
java --module-path mods -m test/com.sample.Main
//testモジュールのcom.sample.Mainクラスを実行

 

※ モジュールはjarコマンドで1つにまとめることができる。

<構文>

 command
jar --create --file=jarファイル名 --main-class=エントリーポイントを持つクラス -C jarファイルに含めるファイルがあるディレクトリ

<例>

 command
jar --create --file=mlib/test.jar --main-class=com.sample.Main -C mods/test

 

モジュールの情報を確認する

javaコマンド--describe--moduleオプション

モジュールの説明を表示するためのコマンド

<例>

 command
>java --module-path mods --describe-module test
test file://Users/kuma/top/java/mods/test/
exports com.sample
requires java.base mandated

 

jmodコマンドdescribeモード

JMODファイル形式モジュールファイルを扱うためのコマンド。JMODファイルにクラスファイルなどをまとめ、1つのモジュールとして提供することができる。

<例>

 command
>java create --classpath mods /test test.jmod
>jmod describe test.jmod
exports com.sample
requires java.base mandated

 

依存関係を調べる

jdepsコマンドを使用する。

<例>

 command
>jdeps --list-deps hello.jar
java.base

プログラム実行時の依存モジュール

javaコマンドの--show-module-resolutionオプションを使用し、プラグラム実行時に依存するモジュールがどのように探されているか表示することができる。

<例>

 command
>java --module-path mods --show-module-resolution -m test/com.sample.Main
root test file://...
test requires foo file://...
java.base binds java.management 
 以下省略

 

非公開パッケージを一時的に公開する

javacコマンドの--add-exportsオプションでコンパイルすることで、非公開パッケージを一時的に公開することができる。

<例>

 command
> javac -d mods/test --module-path mods/ \
> --add-exports test/com.hello=test \  //対象のモジュール/公開するパッケージ=利用するモジュール
> src/test/module-info.java src/test/com/sample/Main.java

-Java, プログラミング

© 2026 Suzuki Blog Powered by AFFINGER5