Java 9 マルチリリース JAR パッケージ

Java 9 新特性Java 9 の新機能

マルチリリース 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");
   }
}

ステップ 2

フォルダ c:/test/java9/com/サンプル を作成し、そのフォルダ内に Test.java ファイルを作成します。コードは次のとおりです。

例

package com.サンプル;

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 新特性Java 9 の新機能

その他の拡張