Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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
javaporjaz. - ☁️ 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:
- Detecta o ambiente de nuvem (por exemplo, limites de contêiner e memória disponível).
- 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.
- Inicia um processo de Java, passando-lhe os sinalizadores de ajuste e quaisquer argumentos fornecidos pelo usuário.
- Retransmite invisivelmente sinais stdout, stderr, stdin e SO de e para o processo de Java.
- 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:
- Use uma imagem de contêiner com a ferramenta pré-instalada.
- Instalar em Azure Linux.
- Instale a partir do Repositório de Software Linux para produtos da Microsoft.
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:
- Eclipse Temurin OpenJDK 8 com JVM do HotSpot
- Microsoft Build do OpenJDK 11, 17, 21 e 25.
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,
SIGTERMeSIGINT.- 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:
jaznão atrasa mais a retransmissão da saída até que ele veja um caractere de nova linha.
- Corrigir chamadas para
- 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.
-
jazagora detecta se algum ajuste manual de JVM está presente e, nesse caso, ele não aplica seus próprios ajustes. -
JAZ_IGNORE_USER_TUNING=1ignora 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 utilizarjazcom 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.