モジュール
JSR-277には、「モジュールとは、カプセル化の単位である」という記述が見られる。これが表すところは、「モジュール単位のアクセス制御が行える」「依存関係をモジュール単位で指定する」といったことができるようになるということだ。
JAMファイルフォーマット
まず先に、モジュールが物理的にどう表現されるかという面からみていこう。先ほども述べたように、モジュールはJAMファイルというファイル形式で表される。
その正体は「モジュール用のメタデータを追加したJAR形式のファイル」だ。具体的には、「/MODULE_INF/METADATA.module」というファイルがそのメタデータであり、前述のアクセス制御や依存関係はここに記述されるわけだ。
JAMファイルの名称は任意であるが、以下の命名規約に則ることが望ましいとされている。
<モジュール名>-<バージョン>[-<プラットフォーム>-<アーキテクチャ>].jam
プラットフォームやアーキテクチャの指定は省略可能だ。モジュール名とバージョンについては後述する。
また、レガシーなJARファイルやネイティブライブラリも、JAMファイルとしてパッケージングすることが可能だ。まず、レガシーなJARファイルはJAMファイル内で以下のように配置する。
/MODULE-INF/lib/<レガシーなJARファイル(複数)>
JARファイルは複数置けることに注意。つまり、古いライブラリをセットにして、一つのモジュールにしてしまうことも可能だということだ。
ネイティブライブラリは、JAMファイル内で以下のように配置する。
/MODULE-INF/bin/<プラットフォーム>/<アーキテクチャ>/<ネイティブライブラリ(複数)>
これをまとめると、まず、クラスx.y.Zを含むJAMファイル「example-1.0.0.jam」は画像1のように、クラスx.y.Zと、レガシーJARファイルregacy.jar、ネイティブライブラリnative.dllを含むJAMファイル「example-2.0.0-windows-x86.jam」は、画像2のようになる。
|
|
画像1: クラスx.y.Zを含むJAMファイル |
画像2: クラスx.y.Zと、レガシーJARファイルregacy.jar、ネイティブライブラリnative.dll |