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


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

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

Традиционно oracle/Sun Microsystems будет создавать установщики среды выполнения Java (JRE), которые будут содержать только виртуальную машину Java, API Java и определенные интеграции с ОС и браузера, направленные на включение компьютеров для запуска приложений Java, скачанных из Интернета, или для запуска приложений Applets и 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

Чтобы создать среду выполнения 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.io пакетах, поэтому он нуждается только в java.lang модуле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 и (или) ее аффилированных лиц.