MENU

【Java Silver】モジュール型プロジェクトのコンパイルと実行に関する理解

モジュールシステムの知識をテストするための問題です。

問題

次のモジュール型プロジェクトで、正しい出力を選んでください。

// module-info.java
module com.example.myapp {
    exports com.example.myapp;
}

// Main.java
package com.example.myapp;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello from MyApp!");
    }
}

選択肢

  • A. Hello from MyApp!
  • B. コンパイルエラーが発生する
  • C. モジュール構成エラーが発生する
  • D. 実行時にエラーが発生する

答えと解説

回答を見る

答え

A. Hello from MyApp!

解説

基本説明

Javaのモジュールシステムは、Java 9から導入され、プログラムをモジュールという単位で分割できるようになりました。この問題の例では、モジュールcom.example.myappを定義し、exports指示子を使ってcom.example.myappパッケージを外部に公開しています。その他のプロジェクトがこのモジュールからクラスを利用するためには、このexports宣言が必要です。

誤答理由

コンパイルエラー(選択肢B)は通常、文法上の誤りや、ファイル配置の問題などによって引き起こされますが、このケースでは適切にmodule-info.javaが配置されているため、問題ありません。モジュール構成エラー(選択肢C)や実行時エラー(選択肢D)は、モジュールの依存関係が不明確な場合に発生しますが、この例では1つのモジュールに自己完結しており、他のモジュールへの依存関係がないため発生しません。

つまずきポイント

Javaのモジュールシステムは比較的新しいため、理解しづらい部分があります。具体的には、module-info.javaを正しい場所に配置しないと意図した通りに動作しません。また、モジュールを構成する際は、モジュール名やパッケージ名を的確に指定する必要があります。

発展知識

モジュールシステムを使うと、Javaアプリケーションをモジュールごとにそれぞれ管理でき、依存関係やバージョン管理が容易になります。大規模システムでは、この仕組みを活用することで、プロジェクトのメンテナンス性やパフォーマンスを向上させることが可能です。

また、モジュールシステムはセキュリティ面においても利点があります。他のモジュールからアクセスを制限することができ、過剰なクラス露出を防ぐことで脆弱性を軽減できます。

目次