Ответ
JLink (Java Linker) — это утилита, появившаяся в Java 9, которая позволяет создавать пользовательские образы времени выполнения (Custom Runtime Images). Она выполняет статическую линковку, включая в итоговый образ только те модули JDK и зависимости, которые действительно нужны приложению.
Основная цель: уменьшить размер развертываемого приложения и улучшить производительность за счет исключения неиспользуемых частей JRE.
Базовое использование:
# Создание образа для модульного приложения
jlink --module-path $JAVA_HOME/jmods:mlib --add-modules com.myapp --output myapp-image
Ключевые параметры:
--module-path: Путь к модулям приложения и JMOD-файлам JDK.--add-modules: Список корневых модулей для включения (транзитивные зависимости добавляются автоматически).--output: Директория для создания пользовательского образа.--compress: Сжатие для уменьшения размера (например,--compress=2).--strip-debug: Удаление отладочной информации.
Результат: В директории myapp-image будет содержаться минимальная JRE и ваше приложение. Запуск осуществляется через myapp-image/bin/java -m com.myapp/com.myapp.Main.
Ответ 18+ 🔞
Да ты посмотри, что эти умники в Java придумали! JLink, блядь! Это ж как отвёртка, которой можно от JDK всё лишнее открутить, оставив только то, что реально нужно. Представь: раньше ты таскал с собой целый склад — стандартную JRE, а там дохуя всего, что твоему приложению нахуй не упёрлось. А теперь — взял, выкинул всё ненужное, и получился такой компактный чемоданчик, только с необходимым.
Зачем это, спрашивается? А чтобы приложение меньше весило, блядь, и быстрее стартовало! Не тащить же за собой всю библиотеку, если ты пользуешься только одной книжкой, верно?
Как этим пользоваться, если руки не из жопы? Всё просто, смотри:
# Берём наши модули и модули JDK, скрещиваем, получаем свой образ
jlink --module-path $JAVA_HOME/jmods:mlib --add-modules com.myapp --output myapp-image
Что тут важно, ёпта?
--module-path: Сюда ты суёшь пути, где лежат твои модули и эти самые JMOD-файлы от JDK. Без этого — нихуя не соберётся.--add-modules: А тут ты говоришь, с какого модуля начинать. JLink сам, хитрая жопа, подтянет все зависимости, которые этому модулю нужны. Автоматом, блядь!--output: Куда сложить получившийся красавец-образ. Укажи папку.--compress: Хочешь ещё меньше размер? Жми на сжатие, например,--compress=2. Выжмешь как лимон.--strip-debug: А это чтобы отладочную инфу выкинуть, она тоже место жрёт. Для прода — самое то.
И что в итоге? В папке myapp-image у тебя будет твоя личная, облегчённая JRE, с твоим приложением внутри. Запускается это чудо так: myapp-image/bin/java -m com.myapp/com.myapp.Main. Никаких лишних телодвижений, всё на месте. Красота, да и только!