Partilhar via


Azure Command Launcher para Java (pré-visualização pública)

O Azure Command Launcher for Java (jaz) é uma utilitária leve que simplifica a forma como Java programadores executam as suas aplicações em Azure. Ao aplicar de forma inteligente opções de Máquina Virtual Java (JVM) adaptadas a ambientes cloud, a ferramenta reduz a sobrecarga de configuração e melhora a utilização de recursos logo de partida, com maior potencial de melhor desempenho.

Esta ferramenta é ideal para desenvolvedores que:

  • Quero melhores configurações padrão de JVM sem me aprofundar nos guias de ajuste.
  • Desenvolver e implementar microserviços nativos da cloud com frameworks como Spring Boot, Quarkus ou Micronaut.
  • Prefiro fluxos de trabalho baseados em contentores, como Kubernetes e OpenShift.
  • Desdobrar cargas de trabalho Java em Azure Container Apps, Azure Kubernetes Service, Azure Red Hat OpenShift ou Máquinas Virtuais do Azure.

Principais características

  • 🛠 Ajusta automaticamente as bandeiras da JVM para implementações cloud-native.
  • 🚀 Experiência plug-and-play. Basta adicionar ao seu Dockerfile ou script de lançamento, substituindo o comando java pelo jaz.
  • ☁️ Otimizado para ambientes Azure.
  • 🔧 Personalizável através de variáveis de ambiente. Existem várias formas de implementar alterações de configuração de forma segura.

Ambientes suportados

O Azure Command Launcher para Java pode ser usado onde quer que o launcher Java esteja disponível em ambientes baseados em Linux. Foi validado e testado nas seguintes plataformas Azure e CI/CD:

  • Azure Kubernetes Service (AKS)
  • Azure Container Apps
  • Serviço de Aplicações do Azure
  • Funções do Azure
  • Azure Red Hat OpenShift (ARO)
  • Máquinas Virtuais do Azure
  • Azure DevOps
  • Codespaces do GitHub
  • GitHub Actions

Pré-visualização pública

O Azure Command Launcher para Java já está disponível em pré-visualização pública! Leia o anúncio de pré-visualização pública para uma introdução a esta ferramenta e aos seus benefícios.

Como funciona

O Azure Command Launcher para Java situa-se entre o comando de arranque do contentor ou da máquina virtual e a JVM. Quando lanças a ferramenta, ela:

  1. Deteta o ambiente da cloud (por exemplo, limites de contentores e memória disponível).
  2. Analisa o tipo de carga de trabalho e seleciona os parâmetros de ajuste da JVM mais apropriados, tais como:
    • Tamanho de pilha.
    • Seleção e afinação do coletor de lixo.
    • Registo e definições de diagnóstico conforme necessário.
  3. Lança um processo em Java, passando-lhe as bandeiras de afinação e quaisquer argumentos fornecidos pelo utilizador.
  4. Retransmite de forma invisível stdout, stderr, stdin e sinais do sistema operacional para e do processo Java.
  5. Monitoriza o processo Java e transmite o seu código de saída quando termina.

Exemplo de utilização

O Azure Command Launcher para Java é um substituto direto para o comando java, não requerendo alterações de código. Basta substituir java por jaz nos seus scripts de lançamento — por exemplo, substituir java -jar foo.jar por jaz -jar foo.jar.

Em vez de ajustar as opções da JVM manualmente:

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

Utilize jaz:

jaz -jar myapp.jar

Seu aplicativo pode se beneficiar automaticamente de:

  • Padrões comprovados para cargas de trabalho nativas da nuvem e contentores.
  • Redução do desperdício de memória na cloud.
  • Melhor desempenho no arranque e no aquecimento.

Instalação

O Azure Command Launcher para Java está disponível tanto para Linux x64 como arm64. Os métodos de instalação suportados são:

Imagens de contêiner

A ferramenta está incluída nas imagens de contentores para o Microsoft Build do OpenJDK. Não é preciso mais configuração.

Por exemplo, o seguinte Dockerfile usa jaz para executar uma aplicação Java a partir de um ficheiro 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 Azure Linux, pode instalar a ferramenta usando o gestor de pacotes tdnf. Instale o jaz pacote com o seguinte comando:

sudo tdnf install jaz

Outras distribuições Linux

Se já configurou o Linux Software Repository for Microsoft Products, execute o comando gestor de pacotes apropriado para a sua distribuição instalar o pacote jaz.

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

sudo apt-get install jaz

Se não tiver configurado o Repositório de Software Linux para Produtos Microsoft, siga as instruções da sua distribuição 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 de adicionar o repositório, instale jaz executando os seguintes comandos:

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

Versões JVM suportadas

O Azure Command Launcher para Java requer uma instalação JDK baseada em OpenJDK (versão 8 ou posterior) presente no sistema. Foi testado com:

Importante

O Azure Command Launcher para Java requer uma instalação completa do JDK. Não está totalmente testado com instalações apenas de JRE ou ambientes de execução personalizados de jlink. Para mais informações, veja "Porque é que não funciona com runtimes JRE ou jlink?".

Configuração

O jaz comando não consome argumentos de linha de comandos para a sua própria configuração. Em vez disso, por defeito, passa todos os argumentos diretamente para o java comando. Para garantir que a jaz configuração não interfira com os argumentos da sua aplicação, jaz apenas aceita a configuração através das variáveis de ambiente.

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

Variável de ambiente Descrição
JAZ_HELP Defina 1 para imprimir uma mensagem de ajuda e sair com o código 0.
JAZ_PRINT_VERSION Defina para 1 imprimir a jaz versão para stdout e sair com código 0.
JAZ_DRY_RUN Define para 1 imprimir o java comando que será executado e sai com código 1.
JAZ_BYPASS Defina 1 para evitar os ajustes de otimização em jaz. Nenhum efeito na telemetria.
JAZ_IGNORE_USER_TUNING Defina como 1 para ignorar todas as flags de afinação fornecidas pelo utilizador e aplicar a afinação jaz em vez disso. Caso contrário, jaz só afinará a JVM se não detetar flags de sintonia fornecidos pelo utilizador. Veja "O que acontece se eu já definir algumas opções de JVM no meu ambiente?" para mais informações sobre como jaz se comporta com e sem ativar esta definição.
JAZ_EXIT_WITHOUT_FLUSH Defina como 1 para ignorar a telemetria de liberação na saída. Isto evita que potenciais atrasos (até 30 segundos) jaz possam ser introduzidos durante a descarga de dados, no entanto jaz ainda pode enviar telemetria.

Usar variáveis de ambiente em vez de argumentos de linha de comandos também facilita a configuração jaz , em alguns casos. Ao implementar uma aplicação containerizada, por vezes é mais fácil definir variáveis de ambiente do que modificar scripts de lançamento, e experimentar JAZ_IGNORE_USER_TUNING com e JAZ_BYPASS pode ser útil ao avaliar jaz.

Roteiro

  • ⚙️ Perfis de configuração da JVM
  • 📦 Suporte AppCDS
  • 🔄 Ajustamento contínuo
  • 📊 Telemetria
  • 📦 Apoio a Leyden

Registo de alterações

0.0.0-preview+20260408.1

  • Atualizações de dependências.

0.0.0-prévia+20260403.2

  • Atualizações de dependências.

0.0.0-pré-visualização+20260323.1

  • Atualizações de dependências.

0.0.0-prévia+20260223.1

  • Atualizações de dependências.

0.0.0-preview+20260120.1

  • Atualizações de dependências.

0.0.0-prévia+20251211.7

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

0.0.0-preview+20251205.1

  • Correções internas de bugs.

0.0.0-preview+20251126.1

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

0.0.0-preview+20251120.1

  • Atualizações de dependências.

0.0.0-preview+20251118.1

  • Entre na Visualização Pública
  • Implementar pacotes RPM e DEB.
  • Melhorar os ajustes de descomprometimento do coletor de lixo.
  • Deixe de gerar diagnósticos pouco claros quando o programa Java sai com código não zero.
  • Melhorar o encaminhamento do sinal do sistema operativo para o processo Java, por exemplo, SIGTERM e SIGINT.
    • Parar um container em execução de uma aplicação Java agora dá tempo à aplicação para desligar de forma graciosa.
  • Remover o uso de PrintFlagsFinal, melhorando a compatibilidade com certas aplicações Java.
    • Corrigir chamadas para System.console() que geram exceções.
    • Corrigir o buffering do stream stdout: jaz já não atrasa a transmissão de saída até encontrar um caractere de nova linha.
  • Outras correções de bugs e melhorias na resiliência interna.

Pré-visualização privada 2

  • Correções de bugs.
  • Expansão da compatibilidade com distribuições Linux ao reduzir os requisitos glibc.
  • jaz agora deteta se existe alguma afinação manual da JVM e, nesse caso, não aplica os seus próprios ajustes.
  • JAZ_IGNORE_USER_TUNING=1 ignora a sintonia manual da JVM, se existente, e aplica os seus próprios ajustes de sintonia.
  • Saída fixa PrintFlagsFinal a aparecer (quando não solicitado) ao usar jaz com o OpenJDK HotSpot JVM 8.

Pré-visualização privada 1

  • Lançamento inicial do Azure Command Launcher para Java.

Telemetria

O Azure Command Launcher para Java recolhe dados de utilização e envia-os à Microsoft para ajudar a melhorar os nossos produtos e serviços. Para saber mais, leia a nossa declaração de privacidade.