Java 9でモジュールを作成する方法を徹底解説!初心者向けステップバイステップガイド
Java 9で導入されたモジュールシステム(Project Jigsaw)は、Javaアプリケーションの構造化と依存関係の管理を大きく改善する機能です。この記事では、モジュールの基本概念から、実際にモジュールを作成して実行するまでの手順を、具体的なコード例とともにわかりやすく解説します。
モジュールとは何か?
モジュールとは、コードとデータをひとまとめにしたパッケージです。モジュールは主に以下の2つの要素で構成されています。
- モジュールのコード:複数のパッケージに整理されており、各パッケージにはJavaのクラスやインターフェースが含まれます。
- モジュールのデータ:リソースファイルやその他の静的な情報が含まれます。
モジュールの重要な特徴は、アーティファクト(成果物)のルートディレクトリに、そのモジュールを記述する「module-info.class」ファイルが含まれている点です。アーティファクトの形式は、従来のJARファイルでも、Java 9で新しく導入されたJMODファイルでも構いません。このmodule-info.classファイルは、ソースコードファイルmodule-info.javaをコンパイルしたものです。
module-info.javaでモジュールを宣言する
モジュールは、module-info.javaファイル内で新しいキーワード「module」を使って宣言します。例えば、com.company.mymoduleというモジュールの基本的な宣言は次のようになります。
module com.tutorialspoint.mymodule {
}
このように空のブロックだけでも最小限のモジュールとして成立しますが、実際にはrequires(依存するモジュールの指定)やexports(外部に公開するパッケージの指定)などを記述することで、モジュール間の依存関係を明示的に制御できます。
モジュール作成の手順
それでは、実際に「com.tutorialspoint.greetings」というモジュールを作成し、実行するまでの一連の手順を見ていきましょう。
ステップ1:フォルダ構成を作成する
まず、C:\JAVA\srcというフォルダを作成し、その中にモジュール名と同じ名前のフォルダcom.tutorialspoint.greetingsを作成します。モジュール名とフォルダ名を一致させることで、プロジェクト構造が分かりやすくなります。
ステップ2:module-info.javaを作成する
次に、C:\JAVA\src\com.tutorialspoint.greetingsディレクトリ内に、以下の内容でmodule-info.javaファイルを作成します。
module com.tutorialspoint.greetings {
}
このファイルがモジュールの定義本体となります。現時点では他のモジュールへの依存も公開もない、シンプルな宣言です。
ステップ3:ソースコードを追加する
モジュールにソースコードを追加します。C:\JAVA\src\com.tutorialspoint.greetings\com\tutorialspoint\greetingsディレクトリにJavaTest.javaというファイルを作成し、以下のコードを記述します。
package com.tutorialspoint.greetings;
public class JavaTest {
public static void main(String args[]) {
System.out.println("Hello Tutorialspoint!");
}
}
パッケージ宣言がモジュール内のディレクトリ構造と一致している点に注目してください。これはJavaの標準的なパッケージ規約に従った配置です。
ステップ4:モジュールをコンパイルする
コンパイル結果の出力先となるフォルダC:\JAVA\modsを作成し、その中にcom.tutorialspoint.greetingsフォルダを作ります。そして、javacコマンドの-dオプションを使って、モジュールをこのディレクトリへコンパイルします。
C:\JAVA>javac -d mods/com.tutorialspoint.greetings src/com.tutorialspoint.greetings/module-info.java
C:\JAVA>javac -d mods/com.tutorialspoint.greetings src/com.tutorialspoint.greetings/com/tutorialspoint/greetings/JavaTest.java
まずmodule-info.javaをコンパイルし、続いてJavaTest.javaを同じ出力先にコンパイルすることで、modsディレクトリ配下に完全なモジュール構造が生成されます。
ステップ5:モジュールを実行する
最後に、javaコマンドでモジュールを実行し、動作を確認します。
C:\JAVA>java --module-path mods -m com.tutorialspoint.greetings/com.tutorialspoint.greetings.JavaTest
Hello Tutorialspoint!
正常に実行されると、コンソールに「Hello Tutorialspoint!」と表示されます。
実行コマンドのオプション解説
上記の実行コマンドで使われたオプションの意味は以下の通りです。
- --module-path:モジュールが配置されている場所(ここではmodsディレクトリ)を指定します。従来のクラスパス(classpath)に代わる、モジュール検索用のパスです。
- -m:実行するメインモジュールと、その中のメインクラス(エントリーポイント)を「モジュール名/クラス名」の形式で指定します。
まとめ
Java 9のモジュールシステムを使うことで、アプリケーションを明確な境界を持つ単位(モジュール)に分割でき、カプセル化の強化や依存関係の明示化、JDK自体の軽量化といったメリットが得られます。今回紹介した手順は非常にシンプルですが、module-info.javaによる宣言、--module-pathと-mオプションによる実行という基本の流れは、より大規模なモジュール開発でも共通しています。まずは小さなモジュールを作成して、モジュールシステムの仕組みに慣れていくことをおすすめします。
-
Java 9のProcessBuilderを使ってプロセスを作成・管理する方法
Java 9では、Process APIが強化され、新たにProcessHandleインターフェースが追加されました。ProcessHandleのインスタンスはローカルプロセスを識別し、プロセスの状態(ステータス)の照会やプロセス管理を可能にします。従来はローカルプロセスのPIDを取得するためにネイティブコードが必要でしたが、ProcessHandle.Infoを使えば、その必要なくPIDやその他のプロセス情報を簡単に取得できるようになりました。 ProcessBuilderクラスは、オペレーティングシステム上で独立したプロセスを作成するために使用されるクラスです。以下の例では、Process
-
Java 9でHTML5準拠のJavadocドキュメントを生成する方法
Java 9より前のバージョンでは、特定のパッケージ、クラス、インターフェース、メソッドに関する情報を調べるには、Googleなどの検索エンジンを使って探す必要がありました。しかしJava 9からは、Javadoc自体に検索機能が組み込まれ、生成されるAPIドキュメントの出力もHTML5標準に準拠するようになりました。 この記事では、実際にサンプルを作成しながら、Java 9でHTML5準拠のJavadocを生成する手順を解説します。 サンプルファイルの作成 まず、「C:/JAVA」フォルダ内に「JavaDocTest.java」というファイルを作成します。コードには、Javadocコメントと