Java 9 マルチリリース JAR パッケージ
マルチリリース JAR 機能を使用すると、特定バージョンの Java 環境でライブラリプログラムを実行する場合にのみ選択して使用するクラスバージョンを作成できます。
によって--releaseパラメータでコンパイルバージョンを指定します。
具体的な変更点は、META-INF ディレクトリ内の MANIFEST.MF ファイルに新しい属性が追加されたことです。
Multi-Release: true
次に、META-INF ディレクトリには versions ディレクトリも追加されました。Java 9 をサポートする場合は、versions ディレクトリの下に 9 のディレクトリがあります。
multirelease.jar
├── META-INF
│ └── versions
│ └── 9
│ └── multirelease
│ └── Helper.class
├── multirelease
├── Helper.class
└── Main.class
次の例では、マルチリリース JAR 機能を使用して Tester.java ファイルから2つのバージョンの JAR パッケージを生成します。1つは JDK 7、もう1つは JDK 9 で、異なる環境で実行します。
ステップ 1
フォルダ c:/test/java7/com/サンプル を作成し、そのフォルダ内に Test.java ファイルを作成します。コードは次のとおりです。
例
package com.サンプル;
public class Tester {
public static void main(String[] args) {
System.out.println("Inside java 7");
}
}
public class Tester {
public static void main(String[] args) {
System.out.println("Inside java 7");
}
}
ステップ 2
フォルダ c:/test/java9/com/サンプル を作成し、そのフォルダ内に Test.java ファイルを作成します。コードは次のとおりです。
例
package com.サンプル;
public class Tester {
public static void main(String[] args) {
System.out.println("Inside java 9");
}
}
public class Tester {
public static void main(String[] args) {
System.out.println("Inside java 9");
}
}
ソースコードをコンパイルします。
C:\test > javac --release 9 java9/com/サンプル/Tester.java C:\JAVA > javac --release 7 java7/com/サンプル/Tester.java
マルチリリース JAR パッケージを作成します。
C:\JAVA > jar -c -f test.jar -C java7 . --release 9 -C java9 . Warning: entry META-INF/versions/9/com/サンプル/Tester.java, multiple resources with same name
JDK 7 で実行します。
C:\JAVA > java -cp test.jar com.サンプル.Tester Inside Java 7
JDK 9 で実行します。
C:\JAVA > java -cp test.jar com.サンプル.Tester Inside Java 9その他の拡張
Java 9 の新機能