先日、JavaSilverの試験(Java SE 11 Programmer I (1Z0-815-JPN))を受験し、合格しました。
私は大学時代に合わせて一年ほどJavaを勉強した後、業務で数年ほどJavaを使っていたので、試験勉強は基本的には知っている内容の復習がメインだったのですが、一部、知らなかったり全く覚えていなかった内容がありましたので復習を兼ねて以下に纏めさせて頂きます。
コンパイルについて
Javaプログラムを実行する場合、以下①、②の手順でコンパイルを行った後に実行を行いますが、Java11では「Launch Single-File Source-Code Programs」が導入され、コンパイルを行わずに実行することができるようになりました。
コンパイルを行わずに実行する場合、以下③で実施します。
javac Sample.java ---①
java Sample ---②
java Sample.java ---③
例外処理:try-catch-finalyブロック
Javaでtry-catch-finalyブロックを使用して例外処理を行う場合、try-catch-finalyおよびtry-catchの記載が行えますが、それ以外に以下のようにtry-finalでの記載もできます。
try{
//tryブロックでの処理
}finaly{
//finalyブロックでの処理
}
モジュールについて
モジュール・システムとは、Java9から導入された、パッケージをグループ化する仕組みのことです。
モジュールを定義する際には以下のようなmojule-info.javaという名前のファイルを作成します。
//mojule-info.java
module モジュール名 { ---①
requires 依存するモジュール名; ---②
exports 公開するパッケージ名; ---③
}
module-info.javaでは①でモジュール名を記述し、波カッコ内にモジュール本体を記述します。
②のrequiresディレクティブではモジュール間の依存関係を表しており、②で記載したモジュールに①で記載したモジュール名が依存します。
③のexportsディレクティブでは他のモジュールに公開するパッケージを表しています。
依存関係のある他モジュールで、②で記載したパッケージのpublicなクラスを使用することができるようになります
モジュールシステムのコンパイル
モジュール化されたプログラムをコンパイルする場合は、以下のコマンドを実施します。
コンパイルが成功するとmodule-info.classがされます。生成されたクラスファイルは、モジュールのルートディレクトリに配置する必要があります。
javac -d クラスファイル生成先 コンパイル対象
モジュール実行
コンパイルしたモジュール化されたプログラムを実行する場合は、以下のコマンドを実行します。
java --module-path モジュールのルートディレクトリ -m 実行するモジュールのクラス
最後に
普段の業務で使用する際はわからないことがある場合もその時に必要な内容のみを調べて進めており、全体を通して確認することはなかったので、大学でJavaを学んで以来数年ぶりにjavaについて全体的に勉強し直しました。
ですので上記の内容含め、忘れていた部分や理解が不十分だった箇所を振り返る良い機会となりました。
また、自分が知らなかった内容は主にJava9以降に追加された機能に関わる部分でしたので、今回を機会に知識をアップデートする必要性を感じました。