Java 9 Multirelease JAR: Aproveitando Versões de Classe Específicas de Plataforma
No Java 9, um novo recurso aprimora o formato JAR para que diferentes versões de classes ou recursos Java possam ser mantidas e usadas conforme a plataforma. No JAR, o arquivo MANIFEST.MF tem uma entrada Multi-Release: true em sua seção principal. O diretório META-INF também contém um subdiretório versions cujos subdiretórios (começando com 9 para Java 9) armazenam classes e arquivos de recursos específicos de versão.
Neste exemplo, usaremos um multirelease jar para ter duas versões de Tester.java, uma para JDK 7 e outra para JDK 9, e executá-lo em diferentes versões do JDK.
Passos
Passo 1 - Crie uma pasta c:/test/java7/com/tutorialspoint. Crie Tester.java com o seguinte conteúdo:
package com.tutorialspoint;
public class Tester {
public static void main(String[] args) {
System.out.println("Inside java 7");
}
}
Passo 2 - Crie uma pasta c:/test/java9/com/tutorialspoint. Crie Tester.java com o seguinte conteúdo:
package com.tutorialspoint;
public class Tester {
public static void main(String[] args) {
System.out.println("Inside java 9");
}
}
Compile os códigos-fonte:
C:\test > javac --release 9 java9/com/tutorialspoint/Tester.java
C:\JAVA > javac --release 7 java7/com/tutorialspoint/Tester.java
Crie o multirelease 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
Execute com JDK 7:
C:\JAVA > java -cp test.jar com.tutorialspoint.Tester
Inside Java 7
Execute com JDK 9:
C:\JAVA > java -cp test.jar com.tutorialspoint.Tester
Inside Java 9
O JAR multirelease permite distribuir uma única biblioteca que se adapta automaticamente à versão do Java em execução.
Java
- Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
- Comentários em Java: Tipos, Uso e Boas Práticas
- Dominando o Loop for Aprimorado em Java: Sintaxe, Exemplos e Boas Práticas
- Dominando Strings em Java: Criação, Métodos e Boas Práticas
- Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
- Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
- Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
- Anotações em Java Explicadas: Tipos, Posicionamento e Exemplos Práticos
- Asserções em Java: Guia Prático para Detectar Bugs e Garantir Confiabilidade do Código
- Entendendo o Java Vector: Uso, Recursos e Comparação com ArrayList