Compartilhar via


Inicializador de comando Azure para Java (versão prévia pública)

O inicializador de comandos Azure para Java (jaz) é um utilitário leve que simplifica como os desenvolvedores Java executam seus aplicativos no Azure. Ao aplicar de forma inteligente opções da Máquina Virtual Java (JVM) personalizadas para ambientes de nuvem, a ferramenta reduz a sobrecarga de configuração e melhora a utilização de recursos sem necessidade de configuração adicional, com maior potencial para melhor desempenho.

Essa ferramenta é ideal para desenvolvedores que:

  • Deseja melhores padrões de JVM sem se aprofundar em guias de configuração.
  • Desenvolva e implante microsserviços nativos de nuvem com estruturas como Spring Boot, Quarkus ou Micronaut.
  • Prefira fluxos de trabalho baseados em contêiner, como Kubernetes e OpenShift.
  • Implante cargas de trabalho Java em Aplicativos de Contêiner do Azure, Serviço de Kubernetes do Azure, Red Hat OpenShift no Azure ou Máquinas Virtuais do Azure.

Características principais

  • 🛠 Ajusta automaticamente sinalizadores JVM para implantações nativas de nuvem.
  • 🚀 Experiência plug-and-play. Basta colocar no seu Dockerfile ou script de inicialização, substituindo o comando java por jaz.
  • ☁️ Otimizado para ambientes de Azure.
  • 🔧 Personalizável por meio de variáveis de ambiente. Há várias maneiras de implementar com segurança as alterações de configuração.

Ambientes com suporte

O inicializador de comandos Azure para Java pode ser usado sempre que o inicializador de Java estiver disponível em ambientes baseados em Linux. Ele foi validado e testado nas seguintes plataformas de Azure e CI/CD:

  • AKS (Serviço de Kubernetes do Azure)
  • Aplicativos de Contêiner do Azure
  • Serviço de Aplicativo do Azure
  • Azure Functions (Funções do Azure)
  • Red Hat OpenShift no Azure (ARO)
  • Máquinas Virtuais do Azure
  • Azure DevOps
  • GitHub Codespaces
  • GitHub Actions

Versão prévia pública

O inicializador de comandos do Azure para Java agora está disponível na versão prévia pública! Leia o comunicado de visualização pública para obter uma introdução a essa ferramenta e seus benefícios.

Como funciona

O inicializador de comando Azure para Java fica entre o seu contêiner ou o comando de inicialização de máquina virtual e a JVM. Quando você inicia a ferramenta, ela:

  1. Detecta o ambiente de nuvem (por exemplo, limites de contêiner e memória disponível).
  2. Analisa o tipo de carga de trabalho e seleciona os sinalizadores de ajuste JVM mais adequados, como:
    • Dimensionamento de heap.
    • Seleção e ajuste do coletor de lixo.
    • Configurações de registros e diagnóstico quando necessário.
  3. Inicia um processo de Java, passando-lhe os sinalizadores de ajuste e quaisquer argumentos fornecidos pelo usuário.
  4. Retransmite invisivelmente sinais stdout, stderr, stdin e SO de e para o processo de Java.
  5. Monitora o processo de Java e retransmite seu código de saída quando ele termina.

Exemplo de uso

O Azure Command Launcher para Java é uma substituição instantânea para o comando java, não exigindo nenhuma alteração de código. Basta substituir javajaz em seus scripts de inicialização , por exemplo, substituir java -jar foo.jar por jaz -jar foo.jar.

Em vez de ajustar manualmente suas opções de JVM:

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

Use jaz:

jaz -jar myapp.jar

Seu aplicativo pode se beneficiar automaticamente de:

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

Instalação

O inicializador de comandos Azure para Java está disponível para o Linux x64 e arm64. Os métodos de instalação com suporte são:

Imagens de contêiner

A ferramenta está incluída nas imagens de contêiner para o Microsoft Build do OpenJDK. Não é necessário mais nenhuma configuração.

Por exemplo, o Dockerfile a seguir usa jaz para executar um aplicativo Java de um arquivo 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"]

Instalar no Azure Linux

Para máquinas virtuais e outros ambientes do Linux Azure, você pode instalar a ferramenta usando o gerenciador de pacotes tdnf. Instale o jaz pacote com o seguinte comando:

sudo tdnf install jaz

Outras distribuições do Linux

Se você já tiver configurado o Repositório de Software linux para produtos Microsoft, execute o comando do gerenciador de pacotes apropriado para a distribuição para instalar o pacote jaz.

Por exemplo, em distribuições baseadas em Ubuntu ou Debian, execute:

sudo apt-get install jaz

Se você não tiver o Repositório de Software do Linux para Microsoft Produtos configurado, siga as instruções para a distribuição do Linux.

Para instalar no Ubuntu, abra um terminal e execute os seguintes comandos:

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

Depois que o repositório for adicionado, instale jaz executando os seguintes comandos:

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

Versões de JVM com suporte

O inicializador de comandos Azure para Java requer que uma instalação do JDK baseada em OpenJDK (versão 8 ou posterior) esteja presente no sistema. Ele foi testado com:

Importante

O inicializador de comandos Azure para Java requer uma instalação completa do JDK. Ele não é totalmente testado com instalações somente JRE ou runtimes de jlink personalizados. Para obter mais informações, consulte "Por que ele não funciona com o JRE ou os runtimes de jlink?".

Configuração

O jaz comando não consome argumentos de linha de comando para sua própria configuração. Em vez disso, por padrão, ele passa todos os argumentos diretamente para o java comando. Para garantir que jaz a configuração não interfira nos argumentos do aplicativo, jaz aceita apenas a configuração por meio de variáveis de ambiente.

O jaz comando pode ser configurado usando essas variáveis de ambiente:

Variável de ambiente Descrição
JAZ_HELP Defina como 1 para imprimir uma mensagem de ajuda e sair com o código 0.
JAZ_PRINT_VERSION Defina 1 para exibir a versão jaz no stdout e sair com o código 0.
JAZ_DRY_RUN Defina como 1 para imprimir o comando java que seria executado e sair com o código 1.
JAZ_BYPASS Defina 1 para ignorar os ajustes de otimização jaz. Nenhum efeito na telemetria.
JAZ_IGNORE_USER_TUNING Defina para 1 ignorar todos os sinalizadores de ajuste fornecidos pelo usuário e aplicar o ajuste jaz. Caso contrário, jaz ajustará apenas a JVM se ela não detectar nenhum sinalizador de ajuste fornecido pelo usuário. Confira "O que acontece se eu já definir algumas opções de JVM em meu ambiente?" para obter mais informações sobre como jaz se comporta com e sem habilitar essa configuração.
JAZ_EXIT_WITHOUT_FLUSH Defina como 1 para ignorar a descarga de telemetria na saída. Isso evita possíveis atrasos (até 30 segundos) jaz podem ser introduzidos durante a liberação de dados; no entanto, jaz ainda pode enviar telemetria.

Usar variáveis de ambiente em vez de argumentos de linha de comando também facilita a configuração jaz em alguns casos. Ao implantar um aplicativo em contêineres, às vezes é mais fácil definir variáveis de ambiente do que modificar scripts de inicialização e experimentar JAZ_IGNORE_USER_TUNING e JAZ_BYPASS pode ser útil ao avaliar jaz.

Roteiro

  • ⚙️ Perfis de configuração de JVM
  • 📦 Suporte ao AppCDS
  • 🔄 Ajuste contínuo
  • 📊 Telemetria
  • 📦 Suporte do Leyden

Changelog

0.0.0-preview+20260408.1

  • Atualizações de dependência.

0.0.0-preview+20260403.2

  • Atualizações de dependência.

0.0.0-preview+20260323.1

  • Atualizações de dependência.

0.0.0-preview+20260223.1

  • Atualizações de dependência.

0.0.0-preview+20260120.1

  • Atualizações de dependência.

0.0.0-preview+20251211.7

  • Atualizações de dependência.
  • Outras correções de erros.

0.0.0-preview+20251205.1

  • Correções de bugs internas.

0.0.0-preview+20251126.1

  • Adicione Microsoft Build do OpenJDK 25 à lista de versões certificadas.

0.0.0-preview+20251120.1

  • Atualizações de dependência.

0.0.0-preview+20251118.1

  • Entrar na Visualização Pública.
  • Implementar pacotes RPM e DEB.
  • Aprimore os ajustes de liberação de memória do coletor de lixo.
  • Pare de emitir saída de diagnóstico pouco clara quando o programa Java sair com código não zero.
  • Aprimore o encaminhamento de sinal do sistema operacional para o processo Java, por exemplo, SIGTERM e SIGINT.
    • Parar um contêiner executando um aplicativo Java agora dá ao aplicativo tempo para desligar normalmente.
  • Remova o uso de PrintFlagsFinal, melhorando a compatibilidade com determinados aplicativos Java.
    • Corrigir chamadas para System.console() que resultam em exceções.
    • Correção do buffer de fluxo stdout: jaz não atrasa mais a retransmissão da saída até que ele veja um caractere de nova linha.
  • Outras correções de bug e melhorias na resiliência interna.

Versão prévia privada 2

  • Correções de bugs.
  • Compatibilidade com distribuições Linux ampliada ao reduzir os requisitos de glibc.
  • jaz agora detecta se algum ajuste manual de JVM está presente e, nesse caso, ele não aplica seus próprios ajustes.
  • JAZ_IGNORE_USER_TUNING=1 ignora o ajuste manual de JVM, se presente, e aplica os próprios ajustes do jaz.
  • Correção para a exibição da saída PrintFlagsFinal (quando não solicitada) ao utilizar jaz com o OpenJDK HotSpot JVM 8.

Versão prévia privada 1

  • Versão inicial do inicializador de comandos Azure para Java.

Telemetria

Azure Inicializador de Comandos para Java coleta dados de uso e os envia para Microsoft para ajudar a melhorar nossos produtos e serviços. Para saber mais, leia nossa política de privacidade.