☕ Как в Java создавать собственные установочные пакеты JDK
Демонстрируем одну из новых возможностей Java 14 – создание нативных установочных версий JDK.
На протяжении большей части своей истории дистрибутивы Java Runtime Environments под Windows были традиционно упакованы в формат EXE. Этот понятный и простой способ установки Java подходит не для всех. Исполняемые файлы не всегда хорошо работают там, где используются такие инструменты, как Microsoft SCCM и подобные альтернативы. Более предпочтительным вариантом является формат MSI. Эквивалентами в мире Linux и OS X являются RPM/DEB и DMG.
Чтобы решить проблему, некоторые организации стали выпускать собственные версии MSI. Например, Oracle предоставляет корпоративный установщик MSI для клиентов по подписке Java SE с выпусками Oracle JDK 7 и JDK 8.
В JDK 14 появился
модуль jdk.incubator.jpackage
, устраняющий описанные неудобства. Полный перечень его возможностей можно почитать в официальном
хелпе, а здесь мы рассмотрим создание собственных инсталлеров MSI, DEB, RPM, DMG.
Примеры
Для Windows будем использовать
Oracle JDK 14, расположенный в папке D:\jdk-14
. Следующая команда создаст
MSI-файл JDK 14, в котором имя и вендор указываются при помощи аргументов -n
и
--vendor
:
Существуют дополнительные
ключи, которые могут быть полезны для дальнейшей настройки полученного пакета. В результате выполнения команды создается файл с именем jdk-14-GA-1.0.msi
. После установки он появится в системном реестре и будет
выглядеть так:
Для Linux мы возьмем дистрибутив OpenJDK 14. Приведем две команды для создания пакетов DEB и RPM:
на выходе получим
файл: openjdk-14-ga_1.0-1_amd64.deb
получили файл: openjdk-14-ga_1.0-1.x86_64.rpm
В Ubuntu
openjdk-14-ga_1.0-1_amd64.deb
можно установить и проверить с помощью утилиты dpkg:
Заключение
Стоит отметить два момента:
- Кросс-платформенные пакеты больше не нужны: запускайте
jpackage
на той же платформе, для которой хотите создать дистрибутив. - Java Packaging Tool находится на стадии разработки, а «инкубаторные» модули передают технологию в руки разработчиков до окончательной доработки. Это значит – ожидайте дальнейших усовершенствований API
jpackage
.
Материалы по теме:
- Java Records. Не музыкальный лейбл, а расширение возможностей языка
- 10 популярных вопросов с Java-собеседований
- 5 книг для Enterprise Java разработчика