Compartilhar via


Inicializador de comandos do Azure para Java (versão prévia privada)

O Inicializador de Comandos do Azure para Java (jaz) é um utilitário leve que simplifica como os desenvolvedores Java executam seus aplicativos no Azure. Ao aplicar de forma inteligente sinalizadores JVM personalizados para ambientes de nuvem, ele reduz a sobrecarga de configuração e melhora a utilização de recursos desde o início, com maior potencial para melhor desempenho.

Essa ferramenta é ideal para desenvolvedores que:

  • Deseja melhores padrões de JVM sem mergulhar profundamente em guias de ajuste
  • Desenvolver e implantar microsserviços nativos de nuvem com estruturas como Spring Boot, Quarkus ou Micronaut
  • Preferir fluxos de trabalho baseados em contêiner, como Kubernetes e OpenShift
  • Implantar cargas de trabalho Java em Aplicativos de Contêiner do Azure, Serviço de Kubernetes do Azure, Red Hat OpenShift do Azure ou VMs do Azure

Principais características

  • 🛠 Ajusta automaticamente sinalizadores JVM para implantações nativas de nuvem
  • 🚀 Experiência de plug-and-play. Basta inserir no seu Dockerfile ou script de inicialização, substituindo o comando java por jaz
  • ☁️ Otimizado para ambientes do Azure. Se você preferir jaz recomendações de configuração de JVM, remova todos os sinalizadores de ajuste JVM do inicializador de comandos existente
  • 🔧 Personalizável por meio de variáveis de ambiente

Visualização Privada

A ferramenta está disponível para download por clientes que solicitaram nossa Visualização Privada. Você pode enviar sua solicitação para ingressar na Visualização Privada.

Como funciona

jaz fica entre o comando de inicialização de contêiner ou VM e a JVM. Ele vai:

  1. Detectar o ambiente de nuvem (por exemplo, limites de contêiner, memória disponível)
  2. Analisa o tipo de carga de trabalho e seleciona as opções de JVM mais adequadas
  3. Inicia o processo java com sinalizadores otimizados, como:
    • Dimensionamento de heap
    • Seleção e ajuste do GC
    • Configurações de registro e diagnóstico conforme necessário

Exemplo de Uso

Em vez disso:

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

Usar:

jaz -jar myapp.jar

Seu aplicativo pode se beneficiar automaticamente de:

  • Padrões testados em batalha para cargas de trabalho nativas e de contêiner de nuvem
  • Redução do desperdício de memória na nuvem
  • Melhor desempenho de inicialização e aquecimento

Instalação

Durante a Prévia Privada, o software é distribuído como arquivo tar.gz, com binários para x64 e arm64, e pode ser facilmente instalado em imagens de contêiner.

FROM mcr.microsoft.com/openjdk/jdk:21-ubuntu

# Install jaz
COPY jaz-versionstring.tar.gz /tmp/
RUN tar -xzf /tmp/jaz-versionstring.tar.gz -C / && mv /jaz*/jaz /usr/bin

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

CMD ["jaz", "-jar", "application.jar"]

Versões de JVM com suporte

jaz dá suporte ao OpenJDK HotSpot JVM versões 8, 11, 17 e 21.

jaz foi testado com a compilação Microsoft do OpenJDK e Eclipse Temurin.

Configuração

O comando jaz só pode ser configurado usando variáveis de ambiente, já que qualquer argumento para jaz deve estar em conformidade com o inicializador java.

Variável de ambiente Descrição
JAZ_HELP Configure para 1 exibir uma mensagem de ajuda.
JAZ_PRINT_VERSION Defina para 1 imprimir a versão jaz para stdout e sair com o código 0.
JAZ_DRY_RUN Defina para 1 imprimir o comando Java que seria executado e sair com código 1.
JAZ_BYPASS Configure como 1 para ignorar os ajustes de otimização jaz. Útil quando voltar para java é disruptivo, por exemplo, em ambientes em contêineres. Nenhum efeito na telemetria.
JAZ_EXIT_WITHOUT_FLUSH Configure para 1 ignorar a descarga de telemetria na saída. Evita atrasos (até 30s) que o componente de software pode introduzir ao esvaziar dados. Ainda é possível enviar algumas telemetrias.
JAZ_SKIP_PRINT_FLAGS_FINAL Defina 1 para pular -XX:+PrintFlagsFinal. Evita a varredura/armazenamento em buffer do stdout que Jaz faz para determinar os sinalizadores finais da JVM.
JAZ_ALWAYS_FILTER_PRINT_FLAGS_FINAL_STDOUT Defina como 1 para sempre filtrar PrintFlagsFinal do stdout. Normalmente, o jaz filtra somente se detectar que o sinalizador foi passado. Será ignorado caso JAZ_SKIP_PRINT_FLAGS_FINAL esteja definido.

Roteiro

  • 📦 Pacotes do Linux (DEB/RPM) e imagens de contêiner
  • ⚙️ Perfis de configuração de JVM
  • 📦 Suporte ao AppCDS
  • 📦 Suporte do Leyden
  • 🔄 Ajuste contínuo
  • 📊 Telemetria compartilhada por meio do Prometheus

Telemetria

O Iniciador de Comandos do Azure para Java coleta dados de uso e os envia à Microsoft para ajudar a melhorar nossos produtos e serviços. Leia a nossa política de privacidade para saber mais.