Java 9 멀티릴리스 JAR: 플랫폼별 클래스 버전 활용
Java 9에서는 JAR 형식이 개선되어 서로 다른 버전의 Java 클래스나 리소스를 유지하고 플랫폼에 따라 사용할 수 있게 되었습니다. JAR에서 MANIFEST.MF 파일의 메인 섹션에 Multi-Release: true 항목이 있습니다. META-INF 디렉터리에는 versions 하위 디렉터리가 있으며, 그 하위 디렉터리(Java 9부터는 9로 시작)에 버전별 클래스와 리소스 파일이 저장됩니다.
이 예제에서는 멀티릴리스 JAR을 사용해 Tester.java 파일의 두 버전(JDK 7용, JDK 9용)을 두고 다른 JDK 버전에서 실행합니다.
단계
1단계 - c:/test/java7/com/tutorialspoint 폴더 생성. Test.java 생성:
Tester.java (Java 7용)
package com.tutorialspoint;
public class Tester {
public static void main(String[] args) {
System.out.println("Inside java 7");
}
}
2단계 - c:/test/java9/com/tutorialspoint 폴더 생성. Test.java 생성:
Tester.java (Java 9용)
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