Java 9モジュールの3つのコンパイルモードとは?レガシー・シングル・マルチモードを解説
モジュールとはパッケージを格納するコンテナであり、各モジュールにはモジュール記述子(module descriptor)が含まれています。この記述子には、モジュール名、依存する他のモジュールの名前、そして外部に公開するパッケージ名が定義されます。公開(exports)されたパッケージは、そのモジュールに依存関係を持つモジュールからのみ利用可能です。
module com.tutorialspoint.app {
/** com.tutorialspoint.app が依存するモジュール */
requires com.tutorialspoint.services;
/** 他のモジュールから利用できるように公開するパッケージ */
exports com.tutorialspoint.app.util;
}Java 9のモジュールシステムでは、コンパイル時に3つの異なるモードが提供されています。レガシーモード、シングルモジュールモード、そしてマルチモジュールモードです。それぞれの特徴と使い分けを見ていきましょう。
モジュールの3つのコンパイルモード
1. レガシーモード(Legacy Mode)
--source、--target、--release の各オプションで指定されたコンパイル環境が 8以下 の場合に有効になります。このモードでは、コンパイラは Java 8以前 とまったく同じように動作します。つまり、classpath といった従来のオプションを使用し、--module-path のようなモジュール関連のオプションは一切使いません。このモードでコンパイルされたコードは、実行時には 無名モジュール(unnamed module) として扱われます。
2. シングルモジュールモード(Single Module Mode)
コンパイル環境が 9以降 で、かつ --module-source-path オプションを使用していない場合に有効になります。このモードでは、コードは従来どおりのパッケージ階層のディレクトリツリー構造で管理され、module-info.java ファイルが存在します。また、クラスパスではなく モジュールパス 上でコードが実行される点が大きな特徴です。
この構成では、module-info.java を src ディレクトリの直下に配置します。同一のディレクトリツリー内に複数の module-info.java を置くことはできないため、「シングルモジュールモード」と呼ばれます。
3. マルチモジュールモード(Multi-Module Mode)
コンパイル環境が 9以降 で、かつ --module-source-path オプションを使用している場合に有効になります。このモードでは、複数のモジュールを同じソースディレクトリ配下にまとめて配置できます。
コンパイル時には、--module-source-path オプションでメインのソースディレクトリを指定します。そして、各モジュールのソースツリーは、メインソースディレクトリ直下にあるそれぞれ専用のサブディレクトリ内に格納します。大規模なプロジェクトで複数モジュールを一括ビルドしたい場合に特に有効なモードです。
-
Windowsのセーフモードとは?3種類のセーフモードの違いと使い分け方を解説
この記事では、Windowsのセーフモードとは何か、そしてセーフモードにはどのような種類があるのか(通常のセーフモード、ネットワーク付きセーフモード、コマンドプロンプト付きセーフモード)について、それぞれの意味と違いをわかりやすく解説します。 多くのWindowsユーザーにとって、セーフモードは馴染みのある機能でしょう。Windowsの不具合を診断したりトラブルシューティングを行ったりする際に、セーフモードでの起動が求められることがよくあります。ここでは、セーフモードの意味と、Windowsが提供しているセーフモードの種類について詳しく見ていきましょう。 Windows 11/10におけるセー
-
Windowsのセーフモードとは?3種類のセーフモードの違いと使い方を徹底解説
本記事では、Windowsのセーフモードとは何か、そしてセーフモードにはどのような種類があるのか——「セーフモード」「ネットワークありのセーフモード」「コマンドプロンプトありのセーフモード」——について、それぞれの意味と違いをわかりやすく解説します。 多くのWindowsユーザーにとって、セーフモードは馴染みのある機能でしょう。Windowsの不具合を診断したりトラブルシューティングを行ったりする際に利用することが多いからです。これまでの記事では、セーフモードでWindowsを起動する方法や、セーフモードへの直接再起動の手順をご紹介してきました。今回は改めて、セーフモードの仕組みと、Wind