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


Средство запуска команд 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

Установите пакет со следующей jaz командой:

sudo tdnf install jaz

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

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

В противном случае найдите инструкции, соответствующие дистрибутиву Linux, в следующем списке. Следуйте инструкциям, но установите jaz вместо msopenjdk-25 пакета.

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

Средство запуска команд Azure для Java поддерживает сборки на основе OpenJDK и протестировано с помощью:

Это важно

Для запуска команд 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 собирает данные об использовании и отправляет его в корпорацию Майкрософт, чтобы улучшить наши продукты и службы. Дополнительные сведения см. в нашем заявлении о конфиденциальности.