Java 9のモジュールシステムとは?4種類のモジュールタイプを徹底解説
Java 9のモジュールシステム(Module System)とは
モジュールシステムは、Java 9で導入された重要な新機能の一つです。モジュールとは複数のパッケージをまとめた単位であり、その中身は大きく2種類に分けられます。
- エクスポートされたパッケージ(Exported packages):モジュールの外部からも利用できる公開パッケージ
- 非公開パッケージ(Concealed packages):同じモジュール内のコードからしかアクセスできない内部パッケージ
この仕組みにより、外部に公開するAPIと内部的な実装を明確に分離でき、カプセル化が大幅に強化されました。
Java 9における4種類のモジュール
Java 9のモジュールシステムでは、モジュールは以下の4種類に分類されます。
1. アプリケーションモジュール(Application Modules)
特定の機能を実現するために開発者が作成するモジュールです。プロジェクトで利用するサードパーティ製ライブラリも、module-info.javaを持っていればこのカテゴリに属します。
2. 自動モジュール(Automated Modules)
モジュール記述子(module-info.class)を持たないJARファイルでも、モジュールパス上に配置すれば自動的にモジュールとして扱われるものを指します。最大のメリットは、Java 9以前にビルドされた既存のJARファイルをそのまま活用できる点です。
3. 無名モジュール(Unnamed Modules)
クラスパス上に置かれたすべてのJARファイルやクラスは、無名モジュールに属します。名前を持たないため、すべてのモジュールを読み取り・エクスポート可能という特性があり、従来のクラスパス方式との互換性を保つ役割を担っています。
4. プラットフォームモジュール(Platform Modules)
JDK自体がモジュール構造へと再編成されており、これらの標準モジュールはプラットフォームモジュールと呼ばれます。java.baseなどが代表例で、必要なモジュールだけを組み合わせた軽量なランタイムの構築が可能になりました。
モジュール定義の基本構文
モジュールはmodule-info.javaファイル内で以下のように宣言します。
module <Module-Name> {
requires moduleName;
exports packageName;
}requiresで依存するモジュールを指定し、exportsで外部に公開するパッケージを宣言します。このシンプルな記述によって、依存関係の明確化と強力なカプセル化の両方を実現できます。
-
Java 9モジュールシステム(JPMS)のメリット・デメリットを徹底解説
Java 9における最大の変更点はモジュールシステム(Java Platform Module System:JPMS)の導入です。この仕組みにより、アプリケーションが必要とするモジュールとAPIだけを読み込んだモジュラJVMを実行できるようになり、利用可能なメモリが少ないデバイス上でもJavaアプリケーションを動作させることが可能になりました。モジュールは「module-info.java」という記述子ファイルで定義します。基本的な構文は以下の通りです。module モジュール名 { requires 依存するモジュール名;  
-
Java 9のJShellで使える「/edit」コマンドの種類と使い方
JShellは、Java 9で導入されたコマンドラインツールです。main()メソッドを用意しなくても、宣言・ステートメント・式をその場で評価できるのが大きな特徴です。さらに、JShellにはJShell Edit Padという簡易テキストエディタが組み込まれており、「/edit」コマンドで起動することで、入力済みのコードを手軽に編集できます。 /editコマンドの3つの形式 JShellで利用できる「/edit」コマンドには、次の3つの形式があります。 /edit /edit [ID] /edit [コード名] /edit:引数なしで実行すると、現在アクティブなすべてのコードがテキストエデ