Что такое JLink в Java и для чего он используется?

«Что такое JLink в Java и для чего он используется?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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.