Javaのモジュールシステムに関する問題です。
目次
問題
次のモジュール型プロジェクトに関する設定が正しい場合、正常にコンパイルし実行も可能なコードを選んでください。
module com.example.app {
requires java.logging;
exports com.example.app.service;
}
package com.example.app.service;
import java.util.logging.Logger;
public class MainService {
private static final Logger logger = Logger.getLogger(MainService.class.getName());
public static void main(String[] args) {
logger.info("Service is running.");
}
}
選択肢
- A. 正常にコンパイルし実行できる
- B. コンパイルエラーが発生する
- C. 実行時エラーが発生する
- D. 実行もできるが警告が表示される
答えと解説
回答を見る
答え
A. 正常にコンパイルし実行できる
解説
解説のポイント:
- モジュール宣言の基本
- requires と exports
- Logger の使用法
- つまづきやすい点
基本説明
Javaモジュールシステムは、Java 9で導入された機能で、コードの再利用性を高めることを目的としています。
モジュールの宣言には、「requires」と「exports」の概念が含まれ、他のモジュールがどのモジュールやパッケージに依存しているかを定義します。
誤答理由
この問題は、モジュールの設定が正しく、パッケージのエクスポートが正しく配置されているため、誤答する要素が意図的に排除されています。
適切な「requires」と「exports」の使用についての理解が問われます。
つまずきポイント
初心者は「requires」や「exports」が何をするのかよくわからないことがあります。
それぞれがモジュール同士の依存関係を明示的に示す方法となり、他のモジュールにこのモジュールのどの部分を見せるか選べます。
発展知識
モジュールシステムの導入により、大規模アプリケーションのメンテナンスが容易になり、セキュリティ管理が強化されます。
モジュールシステムは、パッケージの公開範囲を制御することで、より安全で最適化されたコードの組織を可能にします。