Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
javapelojaz. - ☁️ 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:
- Deteta o ambiente da cloud (por exemplo, limites de contentores e memória disponível).
- 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.
- Lança um processo em Java, passando-lhe as bandeiras de afinação e quaisquer argumentos fornecidos pelo utilizador.
- Retransmite de forma invisível stdout, stderr, stdin e sinais do sistema operacional para e do processo Java.
- 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:
- Use uma imagem de contentor com a ferramenta pré-instalada.
- Instalar no sistema Azure Linux.
- Instalar a partir do Repositório de Software Linux para Microsoft Produtos.
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:
- Eclipse Temurin OpenJDK 8 com HotSpot JVM
- Microsoft Build do OpenJDK 11, 17, 21 e 25.
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,
SIGTERMeSIGINT.- 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:
jazjá não atrasa a transmissão de saída até encontrar um caractere de nova linha.
- Corrigir chamadas para
- 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.
-
jazagora deteta se existe alguma afinação manual da JVM e, nesse caso, não aplica os seus próprios ajustes. -
JAZ_IGNORE_USER_TUNING=1ignora a sintonia manual da JVM, se existente, e aplica os seus próprios ajustes de sintonia. - Saída fixa
PrintFlagsFinala aparecer (quando não solicitado) ao usarjazcom 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.