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


Средство запуска команд Azure для Java (общедоступная предварительная версия)

Средство запуска команд Azure для Java (jaz) — это упрощенная программа, которая упрощает запуск приложений в Azure разработчикам Java. Благодаря интеллектуальному применению параметров виртуальной машины Java (JVM), адаптированных для облачных сред, средство сокращает затраты на конфигурацию и улучшает использование ресурсов из коробки с более высоким потенциалом для повышения производительности.

Это средство идеально подходит для разработчиков, которые:

  • Хотите улучшить настройки JVM по умолчанию без необходимости глубокого изучения руководств по настройке.
  • Разработка и развертывание облачных собственных микрослужб с помощью платформ, таких как Spring Boot, Quarkus или Micronaut.
  • Предпочитайте рабочие процессы на основе контейнеров, такие как Kubernetes и OpenShift.
  • Развертывание рабочих нагрузок Java в приложениях контейнеров Azure, службе Azure Kubernetes, Azure Red Hat OpenShift или виртуальных машинах Azure.

Ключевые особенности

  • 🛠 Автоматически настраивает флаги JVM для облачных развертываний.
  • 🚀 Интерфейс plug-and-play. Просто добавьте внутрь вашего Dockerfile или скрипта запуска, заменив команду java на jaz.
  • ☁️ Оптимизировано для сред Azure.
  • 🔧 Настраиваемая с помощью переменных среды. Существует несколько способов безопасного развертывания изменений конфигурации.

Поддерживаемые среды

Средство запуска команд Azure для Java можно использовать, где средство запуска Java доступно в средах под управлением Linux. Она была проверена и протестирована на следующих платформах Azure и CI/CD:

  • Служба Azure Kubernetes (AKS)
  • Приложения-контейнеры Azure
  • Служба приложений Azure
  • Azure Functions
  • Azure Red Hat OpenShift (ARO)
  • Виртуальные машины Azure
  • Azure DevOps
  • GitHub Codespaces
  • Действия GitHub

Общедоступная предварительная версия

Средство запуска команд Azure для Java теперь доступно в общедоступной предварительной версии! Ознакомьтесь с объявлением общедоступной предварительной версии , чтобы ознакомиться с этим инструментом и его преимуществами.

Принцип работы

Средство запуска команд Azure для Java находится между командой запуска контейнера или виртуальной машины и JVM. При запуске средства он:

  1. Обнаруживает облачную среду (например, ограничения контейнеров и доступную память).
  2. Анализирует тип рабочей нагрузки и выбирает флаги настройки JVM, например:
    • Размер кучи.
    • Выбор и настройка сборщика мусора.
    • Параметры ведения журнала и диагностики по мере необходимости.
  3. Запускает процесс Java, передавая им флаги настройки и любые предоставленные пользователем аргументы.
  4. Невидимо ретранслирует stdout, stderr, stdin и сигналы ОС в и из процесса Java.
  5. Отслеживает процесс Java и передает код выхода при завершении.

Пример использования

Средство запуска команд Azure для Java является вставной заменой для java команды, не требуя изменений кода. Просто замените java на jaz в скриптах запуска — например, замените java -jar foo.jar на jaz -jar foo.jar.

Вместо настройки параметров JVM вручную:

JAVA_OPTS="-XX:... several JVM tuning flags"
java $JAVA_OPTS -jar myapp.jar

Используйте jaz в следующих случаях:

jaz -jar myapp.jar

Ваше приложение может автоматически воспользоваться следующими преимуществами:

  • Боевые, проверенные временем настройки по умолчанию для облачно-нативных рабочих нагрузок и контейнеров.
  • Сокращение объемов памяти в облаке.
  • Улучшена производительность запуска и прогрева.

Установка

Средство запуска команд Azure для Java доступно как для x64, так и для Arm64 Linux. Поддерживаемые методы установки:

Образы контейнеров

Это средство включено в образы контейнеров для Microsoft Build OpenJDK. Дополнительная настройка не требуется.

Например, следующий файл Dockerfile используется jaz для запуска приложения Java из jar файла:

# Use any Microsoft Build of OpenJDK base image
FROM mcr.microsoft.com/openjdk/jdk:25-ubuntu

# Add your application.jar
COPY application.jar /application.jar

# Use jaz to launch your Java application
CMD ["jaz", "-jar", "application.jar"]

Установка в Azure Linux

Для виртуальных машин и других сред Azure Linux можно установить средство с помощью диспетчера tdnf пакетов. Установите пакет со следующей jaz командой:

sudo tdnf install jaz

Другие дистрибутивы Linux

Если вы уже настроили репозиторий программного обеспечения Linux для продуктов Майкрософт, выполните соответствующую команду диспетчера пакетов для дистрибутива jaz , чтобы установить пакет.

Например, в дистрибутивах на основе Ubuntu или Debian выполните следующую команду:

sudo apt-get install jaz

Если у вас нет репозитория программного обеспечения Linux для продуктов Майкрософт, следуйте инструкциям для дистрибутива Linux.

Чтобы установить в Ubuntu, откройте терминал и выполните следующие команды:

wget "https://packages.microsoft.com/config/ubuntu/$(. /etc/os-release; echo $VERSION_ID)/packages-microsoft-prod.deb" -O packages-microsoft-prod.deb && \
  sudo dpkg -i packages-microsoft-prod.deb

После добавления репозитория установите jaz , выполнив следующие команды:

sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install jaz

Поддерживаемые версии JVM

Средство запуска команд Azure для Java требует установки JDK на основе OpenJDK (версии 8 или более поздней) в системе. Он был протестирован с помощью:

Это важно

Для запуска команд Azure для Java требуется полная установка JDK. Он не полностью протестирован с установками только JRE или пользовательскими средами выполнения на основе jlink. Дополнительные сведения см. в статье "Почему она не работает с средами выполнения JRE или jlink?".

Конфигурация

Команда jaz не использует аргументы командной строки для собственной конфигурации. Вместо этого по умолчанию он передает все аргументы непосредственно команде java . Чтобы убедиться, что jaz конфигурация не вмешивается в аргументы приложения, jaz принимает конфигурацию только через переменные окружения.

Команда jaz может быть настроена с помощью следующих переменных среды:

Переменная среды Описание
JAZ_HELP Установите 1 для печати сообщения справки и завершения с кодом 0.
JAZ_PRINT_VERSION Установите значение 1, чтобы печатать jaz версии на stdout и завершить выполнение с кодом 0.
JAZ_DRY_RUN Установите 1, чтобы выводить команду java, которая будет выполнена, и выйти с кодом 1.
JAZ_BYPASS Установите 1, чтобы обойти корректировки оптимизации jaz. Не влияет на данные телеметрии.
JAZ_IGNORE_USER_TUNING Настройте 1 на игнорирование всех флагов настройки, предоставленных пользователем, и вместо этого примените jaz настройку. В противном случае jaz будет настраивать JVM только в том случае, если не обнаружит флаги настройки, предоставленные пользователем. Дополнительные сведения о том, как работает с включенными и выключенными параметрами, см. в статье jaz.
JAZ_EXIT_WITHOUT_FLUSH Установите для 1 чтобы пропустить сброс данных телеметрии при выходе. Это позволяет избежать потенциальных задержек (до 30 секунд) jaz при сбросе данных, однако jaz может по-прежнему отправлять телеметрию.

Использование переменных среды, а не аргументов командной строки также упрощает настройку jaz в некоторых случаях. При развертывании контейнерного приложения иногда проще задать переменные среды, чем изменять скрипты запуска, и экспериментирование с JAZ_IGNORE_USER_TUNING и JAZ_BYPASS может быть полезным при оценке jaz.

Дорожная карта

  • ⚙️ Профили конфигурации JVM
  • 📦 Поддержка AppCDS
  • 🔄 Непрерывная настройка
  • 📊 Телеметрия
  • 📦 Поддержка Leyden

Журнал изменений

Общедоступная предварительная версия 1: 0.0.0-preview+2025118.1

  • Реализуйте пакеты RPM и DEB.
  • Улучшайте корректировки сборщика мусора.
  • Прекратите выводить неясные диагностические данные, когда программа Java завершается с ненулевым кодом.
  • Улучшите передачу сигнала ОС в процесс Java, например, SIGTERM и SIGINT.
    • Остановка контейнера, на котором запущено приложение Java, теперь дает приложению время для корректного завершения работы.
  • Удалите использование PrintFlagsFinal, повышая совместимость с определенными приложениями Java.
    • Исправлены вызовы System.console(), которые вызывают исключения.
    • Исправьте буферизацию потока stdout: jaz больше не задерживает вывод ретранслятора, пока он не увидит новый символ строки.
  • Другие исправления ошибок и улучшения внутренней устойчивости.

Частная предварительная версия 2

  • Исправления ошибок.
  • Расширенная совместимость дистрибутивов Linux путем снижения требований к glibc.
  • jaz теперь обнаруживает наличие какой-либо настройки JVM вручную и в таком случае не применяет собственные корректировки.
  • JAZ_IGNORE_USER_TUNING=1 Игнорирует настройку JVM вручную, если она присутствует, и применяет собственные корректировки настройки jaz.
  • Исправлено PrintFlagsFinal отображение выходных данных (если оно не запрашивается) при использовании jaz с OpenJDK HotSpot JVM 8.

Частная предварительная версия 1

  • Первоначальный выпуск средства запуска команд Azure для Java.

Телеметрия

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