Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Java 9 Multi-Release JAR: версии классов под разные платформы

Java 9 улучшила формат JAR: теперь в одном архиве могут храниться разные версии классов для разных версий платформы. В MANIFEST.MF добавляется запись Multi-Release: true. Директория META-INF/versions/ содержит поддиректории с версией (начиная с 9 для Java 9), где лежат версионно-зависимые классы и ресурсы.

Пример: два варианта Tester.java для JDK 7 и JDK 9

Шаг 1: версия для Java 7

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

Шаг 2: версия для Java 9

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

Компиляция

C:\test> javac --release 9 java9/com/tutorialspoint/Tester.java
C:\JAVA> javac --release 7 java7/com/tutorialspoint/Tester.java

Создание multi-release 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

Запуск на JDK 7

C:\JAVA> java -cp test.jar com.tutorialspoint.Tester
Inside Java 7

Запуск на JDK 9

C:\JAVA> java -cp test.jar com.tutorialspoint.Tester
Inside Java 9

JVM автоматически выбирает подходящую версию класса из META-INF/versions/N/.

java

  1. Освоение операторов Java: типы, синтаксис и практические примеры
  2. Комментарии в Java: типы, использование и лучшие практики
  3. Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
  4. Освоение строк в Java: создание, методы и лучшие практики
  5. Интерфейсы в Java: концепции, реализация и лучшие практики
  6. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  7. Try-with-resources в Java: автоматическое управление ресурсами
  8. Аннотации в Java: типы, размещение и практические примеры
  9. Assertions в Java: практическое руководство по обнаружению багов и обеспечению надежности кода
  10. Понимание Java Vector: использование, особенности и сравнение с ArrayList