
大変お世話になっております。
反逆する武士
uematu tubasaです。
初回投稿日時:2023年7月9日(令和5年7月9日)
本日が黒本のお勉強については最終回となります。
明日以降は政治経済系の記事に戻りたいと思います。
頻繁にはブログ記事をアップできないと思いますので、何卒よろしくお願い申し上げます。
ITエンジニアでの本業が多忙過ぎて、本当に苦しいことになっております。
モジュールシステムの基礎知識を問う問題
1、モジュールの設定はmodule-info.javaに記述する。
2、モジュールの設定では、どのパッケージを公開するのか記述する。
まずは上記を暗記することから始める。
モジュールの実行に関する問題
例題)libディレクトリにあるsampleモジュールを実行したい。エントリーポイントを持つクラスをcom.test.Helloとしたおきのコマンドを答えよ。
回答)java --module-path lib -m sample/com.test.Hello
コンパイル後にjavaコマンドでモジュールのクラスを実行するには、javaコマンドの--module-pathオプションでモジュールを探すためのルートディレクトリを指定し、-mオプションで実行したモジュールクラスを指定します。
モジュールに含まれるクラスを事項するには、モジュール名と実行したいクラスの完全修飾クラス名の間をスラッシュ「/」で区切ります。
モジュールはjarコマンドで1つにまとめることができます。
jarコマンドは複数のクラスをまとめたjarファイルを作るためのコマンドです。
以下のコマンドはhello.jarというファイルを作成するコマンドです。
エントリーポイントを持っているクラスは「com.sample.Main」
このjarファイルには-Cオプションで指定したmods/helloディレクトリ内にあるファイルが含まれます。
jar -create --file=mlib/hello.jar --main-class=com.sample.Main -C mods/hello .
モジュールの公開とパッケージの利用の設定に関する問題
【問題】
sampleモジュールは、com.sampleパッケージを公開し、testモジュールを利用している。
module-info,javaの設定として、正しいものを記述しなさい。
【回答】
module sample {
exports com.sample;
requires test;
}
これが構文なので、覚える必要あり。
別言語を覚えていて良かったと本当に実感しています。
どの言語かは明言しませんが、これは覚えやすい。
モジュールの依存関係の問題
【問題】以下のようなモジュールグラフがあったとき、module1でmodule3に属するパッケージのクラスを利用する際の正しい説明をしなさい。
module1
↓
module2
↓
module3
【回答】
module2のmodule-info.javaでmodule3をrequires transitiveで宣言する。
【解説】
module2が必要とするモジュールの設定をmodule1に伝搬するためには、次のようにtransitiveを付けてrequiresを記述します。
module module2 {
requires transitive module3;
}
プラットフォームモジュールに関する問題
【問題】あらかじめ用意されているモジュールのうち、標準で組み込まれるモジュールは何か。
【回答】java.base
【解説】
プラットフォームモジュールには、いくつか種類がありますが、java.lang、java.util、java.ioなどのどんなプログラムであっても使うであろうパッケージをまとめたものが、java.baseモジュールです。
モジュールの情報を確認するためのコマンドに関する問題
【問題】module-info.javaに設定したモジュールの設定情報を調べるためのコマンドを2つ記述しなさい。
【回答】
java -describe-module
jmod describe
【解説】
そのモジュールがどのようなパッケージを公開しているのか、またどのようなモジュールに依存しているか、module-info.java以外で確認するには以下の2つの方法があります。
1、java -describe-module
2、jmod describe
非公開パッケージの一時的な利用に関する問題
【問題】
module-info.javaでexportsされていないパッケージを、一時的に利用してコンパイルしたい。
javac コマンドのオプションを記述しなさい。
【回答】--add-exports
【解説】
--add-exportsオプションには「対象モジュール/公開するパッケージ=利用するモジュール」の書式で指定します。
以上です。