Java 9のモジュールシステムとは?Jigsawプロジェクトの概要と基本構文を解説
Java 9における最大の変更点の一つがモジュールシステム(Module System)です。これはJigsaw(ジグソー)プロジェクトの一環として導入された機能で、以下のような要素で構成されています。
- モジュール化されたJDK
- モジュール化されたJavaソースコード
- モジュール化されたランタイムイメージ
- Java内部APIのカプセル化
- Javaプラットフォームモジュールシステム
モジュールシステム導入の目的
モジュールシステムを導入する主な動機の一つは、モジュール化されたJVMを実現し、利用可能なメモリが少ないデバイス上でもJavaアプリケーションを動作させられるようにすることです。従来はJVM全体が必要なライブラリを読み込む形でしたが、モジュールシステムにより、アプリケーションに必要なモジュールとAPIだけをロードして実行できるようになりました。これにより、メモリフットプリントの削減や起動時間の短縮といったメリットが得られます。
モジュール宣言の基本構文
モジュールは、module-info.javaというファイル内で次のように宣言します。
module モジュール名 {
requires 依存するモジュール名;
exports 公開するパッケージ名;
}モジュール記述子とrequires / exports
モジュール化されたJARファイルには、通常のクラスファイル群に加えてモジュール記述子(module descriptor)が含まれています。
このモジュール記述子の中では、「requires」文を使って他のモジュールへの依存関係を明示します。一方、「exports」文は、どのパッケージを他のモジュールに対して公開(アクセス許可)するかを制御します。
つまり、exportsされていないパッケージには外部からアクセスできないため、これまでsun.miscなどとして知られていた内部APIが厳密にカプセル化され、より安全で保守性の高いアプリケーション設計が可能になります。
-
JavaのStringIndexOutOfBoundsExceptionとは?発生原因と対処法をわかりやすく解説
StringIndexOutOfBoundsExceptionとはJavaにおいて、文字列(String)は一連の文字を格納するために使用され、オブジェクトとして扱われます。文字列は、java.langパッケージに含まれるStringクラスによって表現されます。文字列の作成方法は主に2つあります。1つは他のオブジェクトと同様にnewキーワードを使用する方法、もう1つはプリミティブ型のようにリテラルを直接代入する方法です。String stringObject = new String(Hello how are you); String stringLiteral = Welcome to T
-
Javaプログラミングとは?言語の特徴と歴史をわかりやすく解説
Javaプログラミングの概要Javaは、1995年にSun Microsystems(サン・マイクロシステムズ)によって開発・公開された、汎用性の高い高水準プログラミング言語です。WindowsやMac OS、さまざまなバージョンのUNIXなど、幅広いプラットフォーム上で動作する点が大きな特徴となっています。Java誕生の背景Java言語のプロジェクトは、1991年6月にジェームズ・ゴスリング(James Gosling)によって開始されました。当初は、彼が手がけていたセットトップボックス関連のプロジェクトで使用されることを目的としていました。この言語は、最初「Oak(オーク)」と呼ばれていま