Fichiers JAR multi-release Java 9
La fonctionnalité JAR multi-release vous permet de créer des versions de classes qui ne sont sélectionnées que lors de l'exécution de programmes de bibliothèque dans une version spécifique de l'environnement Java.
via--releasele paramètre pour spécifier la version de compilation.
Le changement spécifique est qu'un nouvel attribut a été ajouté au fichier MANIFEST.MF dans le répertoire META-INF :
Multi-Release: true
De plus, un répertoire versions est ajouté sous le répertoire META-INF. Si Java 9 doit être pris en charge, il y a un répertoire 9 sous le répertoire versions.
multirelease.jar
├── META-INF
│ └── versions
│ └── 9
│ └── multirelease
│ └── Helper.class
├── multirelease
├── Helper.class
└── Main.class
Dans l'exemple suivant, nous utilisons la fonctionnalité JAR multi-release pour générer deux versions du paquet jar à partir du fichier Tester.java, une pour JDK 7 et l'autre pour JDK 9, puis nous les exécutons dans différents environnements.
Étape 1
Créez le dossier c:/test/java7/com/example, puis créez le fichier Test.java dans ce dossier. Le code est le suivant :
Exemple
public class Tester {
public static void main(String[] args) {
System.out.println("Inside java 7");
}
}
Étape 2
Créez le dossier c:/test/java9/com/example, puis créez le fichier Test.java dans ce dossier. Le code est le suivant :
Exemple
public class Tester {
public static void main(String[] args) {
System.out.println("Inside java 9");
}
}
Compiler le code source :
C:\test > javac --release 9 java9/com/example/Tester.java C:\JAVA > javac --release 7 java7/com/example/Tester.java
Créer un fichier JAR multi-release
C:\JAVA > jar -c -f test.jar -C java7 . --release 9 -C java9 . Warning: entry META-INF/versions/9/com/example/Tester.java, multiple resources with same name
Exécuter avec JDK 7 :
C:\JAVA > java -cp test.jar com.example.Tester Inside Java 7
Exécuter avec JDK 9 :
C:\JAVA > java -cp test.jar com.example.Tester Inside Java 9Autres extensions
Nouveautés de Java 9