Paquete jar compatible con múltiples versiones Java 9
La función de JAR compatible con múltiples versiones te permite crear versiones de clase que solo se utilizan al ejecutar programas de biblioteca en un entorno Java de una versión específica.
Mediante--releaseEl parámetro especifica la versión de compilación.
El cambio concreto es que se ha agregado un atributo al archivo MANIFEST.MF en el directorio META-INF:
Multi-Release: true
Además, se ha agregado un directorio versions bajo el directorio META-INF. Si se desea soportar java9, habrá un directorio 9 dentro del directorio versions.
multirelease.jar
├── META-INF
│ └── versions
│ └── 9
│ └── multirelease
│ └── Helper.class
├── multirelease
├── Helper.class
└── Main.class
En el siguiente ejemplo, usamos la función de JAR compatible con múltiples versiones para generar dos versiones del paquete jar a partir del archivo Tester.java: una con jdk 7 y otra con jdk 9, y luego lo ejecutamos en diferentes entornos.
Paso 1
Crea la carpeta c:/test/java7/com/ejemplo y, dentro de esa carpeta, crea el archivo Test.java con el siguiente código:
Ejemplo
public class Tester {
public static void main(String[] args) {
System.out.println("Inside java 7");
}
}
Paso 2
Crea la carpeta c:/test/java9/com/ejemplo y, dentro de esa carpeta, crea el archivo Test.java con el siguiente código:
Ejemplo
public class Tester {
public static void main(String[] args) {
System.out.println("Inside java 9");
}
}
Compilar el código fuente:
C:\test > javac --release 9 java9/com/ejemplo/Tester.java C:\JAVA > javac --release 7 java7/com/ejemplo/Tester.java
Crear un paquete jar compatible con múltiples versiones
C:\JAVA > jar -c -f test.jar -C java7 . --release 9 -C java9 . Warning: entry META-INF/versions/9/com/ejemplo/Tester.java, multiple resources with same name
Ejecutar con JDK 7:
C:\JAVA > java -cp test.jar com.ejemplo.Tester Inside Java 7
Ejecutar con JDK 9:
C:\JAVA > java -cp test.jar com.ejemplo.Tester Inside Java 9Otras extensiones
Novedades de Java 9