Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java 9 Multi-Release JAR: Plattformspezifische Klassenversionen in einem Archiv

Was ist ein Multi-Release JAR?

Ein Multi-Release JAR (MRJAR) ermöglicht, verschiedene Versionen derselben Klasse für unterschiedliche Java-Laufzeitversionen in einem JAR zu bündeln. Die JVM lädt zur Laufzeit automatisch die passende Version.

Struktur

mein-mrjar.jar
├── META-INF/
│   ├── MANIFEST.MF          ← enthält: Multi-Release: true
│   └── versions/
│       └── 9/               ← Klassen für Java 9+
│           └── com/beispiel/Tester.class
└── com/beispiel/Tester.class   ← Basisklasse (Java 8 oder älter)

Schritt-für-Schritt Beispiel

1. Basisklasse (Java 7/8 kompatibel)

// c:/test/java7/com/beispiel/Tester.java
package com.beispiel;
public class Tester {
    public static void main(String[] args) {
        System.out.println("Inside Java 7");
    }
}

2. Java-9-spezifische Implementierung (nutzt z. B. Module, var, ...)

// c:/test/java9/com/beispiel/Tester.java
package com.beispiel;
public class Tester {
    public static void main(String[] args) {
        System.out.println("Inside Java 9");
    }
}

3. Kompilieren mit --release

javac --release 9 -d java9 java9/com/beispiel/Tester.java
javac --release 7 -d java7 java7/com/beispiel/Tester.java

4. MRJAR erzeugen

jar --create --file test.jar \
    -C java7 . \
    --release 9 -C java9 .

Warnung „multiple resources with same name“ ist normal & erwartet.

5. Testen

# Auf Java 7/8
java -cp test.jar com.beispiel.Tester
# Ausgabe: Inside Java 7

# Auf Java 9+
java -cp test.jar com.beispiel.Tester
# Ausgabe: Inside Java 9

Wichtige Regeln

Anwendungsfälle

Tooling

Java

  1. Java Operatoren meistern: Typen, Syntax und praktische Beispiele
  2. Java Kommentare: Typen, Verwendung und Best Practices
  3. Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
  4. Java Strings meistern: Erstellung, Methoden und Best Practices
  5. Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
  6. Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
  7. Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
  8. Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
  9. Java Assertions: Praktischer Leitfaden zur Fehlererkennung und Code-Reliabilität
  10. Java Vector verstehen: Verwendung, Funktionen und Vergleich mit ArrayList