学習を続けましょう。今回のテーマはモジュール型JDKとモジュールシステムに関する問題です。
問題
以下のモジュール定義を含むプログラムをコンパイルするとき、指定する必要のあるモジュールパスの正しい設定はどれでしょうか?
// module-info.java
module com.example.app {
requires com.example.library;
}
選択肢
- A. モジュールパスに com.example.library の jar を指定する。
- B. コンパイルするときにモジュールパスの指定は不要。
- C. クラスパスに全ての jar を含める。
- D. クラスパスとモジュールパスの両方に jar を指定する。
答えと解説
回答を見る
答え
A. モジュールパスに com.example.library の jar を指定する。
解説
解説のポイント:
- モジュールシステムの基本
- モジュールパスとクラスパスの違い
モジュールシステムは、Java 9から導入されたJavaのコード管理方法です。これは、大規模アプリケーションの作成やライブラリ間の依存関係を明示するためのものです。
具体的には、requires
を使って他のモジュールへの依存をmodule-info.java
ファイルで宣言します。
モジュールパスとは、このモジュールシステムで依存するモジュールの場所を指定するために用いるものです。
選択肢Aは、正しくモジュールパスを使用して依存モジュールを指定しています。反対に、選択肢Bはモジュールシステムを無視し、クラシックなクラスパスの考えを示していますが、これはモジュールシステムを正しく活かせていません。
選択肢C、Dも正しくありません。クラスパスに依存モジュールを含めると、パッケージの分離や依存性の改善を期待できないからです。
モジュール型JDKを使用することで、Javaプログラムはモジュールとして構造化されます。これにより、複雑な依存関係が解消され、パフォーマンスやメンテナンス性が向上します。
モジュールパスを設定する際のコマンドラインオプションは--module-path
または略記形の-p
です。
モジュールへの移行の際に注意すべきは、既存のクラスパス依存のプロジェクトをモジュールシステムに転換することであり、これはインキュベーター的要素でもあります。
まとめると、Javaのモジュールシステムは従来のクラスパスから進化した新しい依存管理方法であり、モジュールパスの適切な設定が必要です。