Среда выполнения 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 с помощью jlink
Чтобы создать среду выполнения 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.
Microsoft Q&A
javax.net.ssl.SSLHandshakeException: получено смертельное оповещение: handshake_failure
Сведения об устранении этой проблемы см. в статье "Безопасность и шифрование Java".
Ресурсы
Предоставление отзывов о Сборке OpenJDK в Microsoft
Отправьте нам свои комментарии, мысли и идеи, чтобы помочь нам улучшить Microsoft Build OpenJDK. Посетите страницу обсуждений OpenJDK на сайте GitHub, чтобы отправить нам свой отзыв.
Java и OpenJDK являются товарными знаками или зарегистрированными товарными знаками компании Oracle и (или) ее аффилированных лиц.