Java 9マルチリリースJAR:プラットフォーム固有のクラスバージョンを共存させる
Java 9では、JAR形式が拡張され、異なるバージョンのJavaクラスやリソースをプラットフォームに応じて保持・使用できるようになりました。JAR内のMANIFEST.MFファイルのメインセクションにMulti-Release: trueエントリを追加します。META-INFディレクトリにversionsサブディレクトリが含まれ、そのサブディレクトリ(Java 9なら9から始まる)にバージョン固有のクラスとリソースファイルを格納します。
この例では、マルチリリースJARを使ってTester.javaの2つのバージョン(JDK 7用とJDK 9用)を持ち、異なるJDKバージョンで実行します。
手順
ステップ1:JDK 7用クラス作成
c:/test/java7/com/tutorialspointフォルダを作成し、Tester.javaを配置:
package com.tutorialspoint;
public class Tester {
public static void main(String[] args) {
System.out.println("Inside java 7");
}
}
ステップ2:JDK 9用クラス作成
c:/test/java9/com/tutorialspointフォルダを作成し、Tester.javaを配置:
package com.tutorialspoint;
public class Tester {
public static void main(String[] args) {
System.out.println("Inside java 9");
}
}
コンパイル
C:\test > javac --release 9 java9/com/tutorialspoint/Tester.java C:\JAVA > javac --release 7 java7/com/tutorialspoint/Tester.java
マルチリリースJAR作成
C:\JAVA > jar -c -f test.jar -C java7 . --release 9 -C java9. Warning: entry META-INF/versions/9/com/tutorialspoint/Tester.java, multiple resources with same name
JDK 7で実行
C:\JAVA > java -cp test.jar com.tutorialspoint.Tester Inside Java 7
JDK 9で実行
C:\JAVA > java -cp test.jar com.tutorialspoint.Tester Inside Java 9
同じJARファイルで、実行環境のJDKバージョンに応じて適切なクラスが自動選択されます。
Java
- Java演算子をマスター:種類、構文、実践例
- Javaコメント:種類、使い方、ベストプラクティス
- Java拡張forループをマスター:構文、例、ベストプラクティス
- Java文字列をマスター:生成、メソッド、ベストプラクティス
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
- Java無名インナークラス完全ガイド:定義、構文、実践例
- Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
- Javaアノテーション完全ガイド:種類、配置場所、実践例
- Javaアサーション完全ガイド:バグ早期発見とコード信頼性の向上
- Java Vectorの理解:使い方、特徴、ArrayListとの比較
- Java 9マルチリリースJAR:プラットフォーム固有のクラスバージョンを共存させる