Java 9 Multi-Release JAR: Aprovechar Versiones de Clase Específicas de Plataforma
En Java 9, se introduce una nueva característica donde el formato JAR se ha mejorado para que diferentes versiones de clases o recursos de Java puedan mantenerse y usarse según la plataforma. En JAR, un archivo MANIFEST.MF tiene una entrada Multi-Release: true en su sección principal. El directorio META-INF también contiene un subdirectorio versions cuyos subdirectorios (empezando con 9 para Java 9) almacenan clases y archivos de recursos específicos de versión.
En este ejemplo, usaremos un jar multi-release para tener dos versiones de Tester.java, una para jdk 7 y otra para jdk 9 y ejecutarlo en diferentes versiones de jdk.
Pasos
Paso 1 - Crear una carpeta c:/test/java7/com/tutorialspoint. Crear Test.java con el siguiente contenido:
Tester.java
package com.tutorialspoint;
public class Tester {
public static void main(String[] args) {
System.out.println("Dentro de Java 7");
}
}
Paso 2 - Crear una carpeta c:/test/java9/com/tutorialspoint. Crear Test.java con el siguiente contenido:
Tester.java
package com.tutorialspoint;
public class Tester {
public static void main(String[] args) {
System.out.println("Dentro de Java 9");
}
}
Compila los códigos fuente.
C:\test > javac --release 9 java9/com/tutorialspoint/Tester.java
C:\JAVA > javac --release 7 java7/com/tutorialspoint/Tester.java
Crea el jar multi-release
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
Ejecutar con JDK 7
C:\JAVA > java -cp test.jar com.tutorialspoint.Tester
Inside Java 7
Ejecutar con JDK 9
C:\JAVA > java -cp test.jar com.tutorialspoint.Tester
Inside Java 9
Java
- Dominar Operadores en Java: Tipos, Sintaxis y Ejemplos Prácticos
- Comentarios en Java: Tipos, Uso y Mejores Prácticas
- Dominar el Bucle for Mejorado en Java: Sintaxis, Ejemplos y Mejores Prácticas
- Dominar Strings en Java: Creación, Métodos y Mejores Prácticas
- Dominando interfaces en Java: Conceptos, implementación y mejores prácticas
- Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
- Dominando Try‑with‑Resources en Java: Gestión automática de recursos explicada
- Anotaciones en Java explicadas: Tipos, ubicación y ejemplos prácticos
- Aserciones en Java: Guía práctica para detectar bugs y asegurar fiabilidad del código
- Entendiendo Java Vector: Uso, Características y Comparación con ArrayList
- Java 9 Multi-Release JAR: Aprovechar Versiones de Clase Específicas de Plataforma