Paquete jar compatible con múltiples versiones Java 9

Java 9 新特性Novedades de 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

package com.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

package com.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 9

Java 9 新特性Novedades de Java 9

Otras extensiones