Поделиться через


Среды выполнения Java с jlink

Корпорация Майкрософт признает и поддерживает внедрение пользовательских сред выполнения Java, созданных для конкретных приложений, а не использование сред выполнения Java общего назначения. Этот метод развертывания Java гарантирует, что среда выполнения Java содержит только части платформы Java, которые действительно необходимы приложениям, поэтому повышают безопасность, сокращают размер развертывания и повышают производительность как для облачных, так и для серверных приложений Java, а также для классических и графических приложений.

Традиционно Oracle/Sun Microsystems создавали установщики среды выполнения Java (JRE), которые содержали только виртуальную машину Java, API Java и интеграции с ОС и браузером, с целью обеспечения возможности компьютеров для запуска Java-приложений, скачанных из Интернета, или для запуска апплетов и приложений Java Web Start через браузер.

С появлением современных веб-приложений и браузеров технологии Applets и Java Web Start стали устаревшими, а браузеры больше не поддерживают подключаемые модули Java. Потребность в предварительно установленных средах выполнения Java общего пользования на компьютерах со временем стала менее значительной. В Java 9 API Applet стал устаревшим (см. JEP 289), а в Java 17 API был помечен как подлежащий удалению, то есть он будет удален в одном из будущих выпусков Java.

Еще одним значительным изменением является модульизация Java, а также началось с выпуска Java 9 (см. JSR 376). В рамках этого изменения разработчики теперь могут использовать только что добавленную командную строку в JDK jlink , чтобы создать настраиваемую среду выполнения Java, специально разработанную для удовлетворения потребностей приложений, для развертывания как встроенной встроенной среды выполнения вместе с кодом приложения часто в составе образа контейнера для облачных рабочих нагрузок. или в составе установщиков для приложений на основе графического интерфейса.

Сегодня Minecraft: Java Edition развертывается для миллионов игроков Minecraft с пользовательской средой выполнения Java, внедренной в игру. За веб-службами, такими как LinkedIn, Yammer, Bing и Azure, корпорация Майкрософт также развертывает сотни тысяч виртуальных машин Java (JVM) с использованием этого метода.

Создание пользовательской среды выполнения Java

Чтобы создать среду выполнения Java, необходимо установить JDK 9 или более поздней версии в вашей среде. Сначала скачайте и установите Microsoft Build openJDK.

Определение необходимых модулей с помощью jdeps

Платформа Java теперь сегментируется в модули. Полный список см. в документации по Java 17 . Другие версии Java могут включать новые модули.

Средство JDK jdeps можно использовать для анализа .class файла, каталога или JAR файла, для идентификации зависимостей модуля Java, внутренних зависимостей JDK и других полезных сведений, которые помогут разработчикам создавать среды выполнения Java.

$ cat HelloWorld.java
public class HelloWorld {
  public static void main(String args[]) {
    System.out.println("Hello World!");
  }
}

$ jdeps HelloWorld.class
HelloWorld.class -> java.base
   <unnamed>                                          -> java.io                                            java.base
   <unnamed>                                          -> java.lang                                          java.base

Средство jdeps указывает, что этот класс зависит только от типов в java.lang и java.io пакетах, поэтому ему нужен только модуль java.base. Аналогичные выходные данные будут созданы для файла JAR в качестве ввода. Список обязательных модулей позволяет создать среду выполнения Java.

Чтобы создать среду выполнения Java из JDK, необходимо знать, какие модули требуется. Используйте jdeps для их идентификации. Дополнительные сведения о средстве командной jlink строки см. в документации.

Пример:

$ jlink \
         --add-modules java.base \
         --strip-debug \
         --no-man-pages \
         --no-header-files \
         --compress=2 \
         --output /javaruntime

Теперь можно использовать среду выполнения Java, расположенную в /javaruntime, чтобы выполнять код приложения, зависящего от модуля java.base. Структура javaruntime папки, созданной с помощью jlink JDK, аналогична структуре каталогов JDK, а java средство командной строки для запуска JVM находится в папке ./bin/ как обычно. Если пользовательская Java-среда выполнения содержит все необходимые модули существующего приложения, на нее можно ссылаться JAVA_HOME.

$ /javaruntime/bin/java HelloWorld
Hello, World!

В приведенном выше примере созданная среда выполнения Java в Windows потребляет около 24 МБ в Windows.

Создание среды выполнения Java с помощью образа контейнера Docker

Вы можете использовать многоэтапные сборки Docker для создания, использования и упаковки пользовательской среды выполнения Java в рамках сборки образа. Узнайте , как создавать среды выполнения Java с помощью Docker.

База знаний

javax.net.ssl.SSLHandshakeException: получено критическое предупреждение: handshake_failure

Сведения об устранении этой проблемы см. в статье " Безопасность и шифрование Java ".

Ресурсы

Предоставление отзывов о Сборке OpenJDK в Microsoft

Отправьте нам свои комментарии, мысли и идеи, чтобы помочь нам улучшить Microsoft Build OpenJDK. Посетите страницу обсуждений OpenJDK на сайте GitHub , чтобы отправить нам свой отзыв.

Java и OpenJDK — это товарные знаки или зарегистрированные товарные знаки Oracle и /или ее филиалов.