Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El iniciador de comandos Azure para Java (jaz) es una utilidad ligera que simplifica cómo Java los desarrolladores ejecutan sus aplicaciones en Azure.
Al aplicar de forma inteligente Java opciones de máquina virtual (JVM) adaptadas para entornos en la nube, la herramienta reduce la sobrecarga de configuración y mejora el uso de recursos de forma predeterminada, con un mayor potencial para mejorar el rendimiento.
Esta herramienta es ideal para desarrolladores que:
- Quiere mejores valores predeterminados de JVM sin profundizar en las guías de optimización.
- Desarrolle e implemente microservicios nativos en la nube con marcos como Spring Boot, Quarkus o Micronaut.
- Se prefieren flujos de trabajo basados en contenedores, como Kubernetes y OpenShift.
- Implemente cargas de trabajo de Java en Azure Container Apps, Azure Kubernetes Service, Red Hat OpenShift en Azure o Azure Virtual Machines.
Características clave
- 🛠 Ajusta automáticamente las marcas de JVM para las implementaciones nativas de la nube.
-
🚀 Una experiencia Plug and Play. Simplemente colóquelo en su Dockerfile o en su script de inicio, reemplazando el comando
javaporjaz. - ☁️ Optimizado para entornos de Azure.
- 🔧 Personalizable a través de variables de entorno. Hay varias maneras de implementar de forma segura los cambios de configuración.
Entornos soportados
El iniciador de comandos Azure para Java se puede usar siempre que el iniciador de Java esté disponible en entornos basados en Linux. Se ha validado y probado en las siguientes plataformas de CI/CD y Azure:
- Azure Kubernetes Service (AKS)
- Azure Container Apps
- Azure App Service
- Azure Functions
- Red Hat OpenShift en Azure (ARO)
- Azure Virtual Machines
- Azure DevOps
- GitHub Codespaces
- Acciones de GitHub
Versión preliminar pública
El iniciador de comandos Azure para Java ya está disponible en versión preliminar pública. Lea el anuncio de versión preliminar pública para obtener una introducción a esta herramienta y sus ventajas.
Cómo funciona
El Azure iniciador de comandos para Java se encuentra entre el comando de inicio de la máquina virtual o el contenedor y JVM. Al iniciar la herramienta, se hace lo siguiente:
- Detecta el entorno de nube (por ejemplo, límites de contenedor y memoria disponible).
- Analiza el tipo de carga de trabajo y selecciona las marcas de ajuste de JVM más adecuadas, como:
- Ajuste de tamaño del montón.
- Selección y optimización del recolector de basura.
- Configuración de registro y diagnóstico según sea necesario.
- Inicia un proceso de Java, pasándolo las marcas de optimización y los argumentos proporcionados por el usuario.
- Retransmite invisiblemente señales stdout, stderr, stdin y OS hacia y desde el proceso de Java.
- Supervisa el proceso de Java y retransmite su código de salida cuando finaliza.
Ejemplo de uso
El iniciador de comandos Azure para Java es un reemplazo de drop-in para el comando java, sin necesidad de cambios en el código. Simplemente reemplace java con jaz en sus scripts de inicio; por ejemplo, reemplace java -jar foo.jar con jaz -jar foo.jar.
En lugar de ajustar las opciones de JVM manualmente:
JAVA_OPTS="-XX:... several JVM tuning flags"
java $JAVA_OPTS -jar myapp.jar
Utilice jaz:
jaz -jar myapp.jar
La aplicación puede beneficiarse automáticamente de:
- Los valores predeterminados probados en batalla para cargas de trabajo nativas y de contenedor en la nube.
- Se ha reducido el desperdicio de memoria en la nube.
- Mejor rendimiento de inicio y calentamiento.
Instalación
El iniciador de comandos Azure para Java está disponible para x64 y arm64 Linux. Los métodos de instalación admitidos son:
- Utilice una imagen de contenedor con la herramienta preinstalada.
- Instalar en Azure Linux.
- Instalar desde el repositorio de software de Linux para productos de Microsoft.
Imágenes del contenedor
La herramienta se incluye en las imágenes de contenedores de Compilación de Microsoft de OpenJDK. No es necesario configurar más.
Por ejemplo, el siguiente Dockerfile usa
# 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"]
Instalación en Azure Linux
En el caso de las máquinas virtuales y otros entornos de Azure Linux, puede instalar la herramienta mediante el administrador de paquetes tdnf. Instale el jaz paquete con el siguiente comando:
sudo tdnf install jaz
Otras distribuciones de Linux
Si ya ha configurado el repositorio de software de Linux para productos de Microsoft, ejecute el comando del administrador de paquetes adecuado para la distribución para instalar el paquete jaz.
Por ejemplo, en distribuciones basadas en Ubuntu o Debian, ejecute:
sudo apt-get install jaz
Si no tiene configurado el repositorio de software de Linux para Microsoft Productos, siga las instrucciones de la distribución de Linux.
Para instalar en Ubuntu, abra un terminal y ejecute los siguientes 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
Después de agregar el repositorio, instale jaz mediante la ejecución de los siguientes comandos:
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install jaz
Versiones admitidas de JVM
El iniciador de comandos de Azure para Java requiere una instalación de JDK basada en OpenJDK (versión 8 o posterior) que esté presente en el sistema. Se ha probado con:
- Eclipse Temurin OpenJDK 8 con HotSpot JVM
- Compilación de Microsoft de OpenJDK 11, 17, 21 y 25.
Importante
El iniciador de comandos de Azure para Java requiere una instalación completa de JDK. No se ha comprobado por completo con instalaciones de solo JRE o con rutinas personalizadas de jlink. Para obtener más información, consulte "¿Por qué no funciona con los entornos de ejecución jrE o jlink?".
Configuración
El jaz comando no consume ningún argumento de línea de comandos para su propia configuración.
En su lugar, de forma predeterminada, pasa todos los argumentos directamente al java comando .
Para asegurarse de que jaz la configuración no interfiere con los argumentos de la aplicación, jaz solo acepta la configuración a través de variables de entorno.
El jaz comando se puede configurar mediante estas variables de entorno:
| Variable de entorno | Descripción |
|---|---|
JAZ_HELP |
Establezca en 1 para imprimir un mensaje de ayuda y salir con el código 0. |
JAZ_PRINT_VERSION |
Establezca 1 para imprimir la versión jaz en stdout y salir con el código 0. |
JAZ_DRY_RUN |
Establézcalo en 1 para imprimir el java comando que se ejecutaría y salir con el código 1. |
JAZ_BYPASS |
Establézcalo en 1 para omitir jaz los ajustes de optimización. No hay ningún efecto en la telemetría. |
JAZ_IGNORE_USER_TUNING |
Establézcalo en 1 para omitir todas las marcas de optimización proporcionadas por el usuario y aplicar la optimización jaz en su lugar. De lo contrario, jaz solo ajustará la JVM si no detecta marcas de optimización proporcionadas por el usuario. Consulte "¿Qué ocurre si ya he establecido algunas opciones de JVM en mi entorno?" para obtener más información sobre cómo jaz se comporta con y sin habilitar esta configuración. |
JAZ_EXIT_WITHOUT_FLUSH |
Establézcalo en 1 para omitir el vaciado de datos de telemetría al salir. Esto evita posibles retrasos (hasta 30s) jaz que podrían introducirse al vaciar los datos, pero jaz podría seguir enviando telemetría. |
El uso de variables de entorno en lugar de argumentos de línea de comandos también facilita la configuración jaz en algunos casos.
Al implementar una aplicación en contenedores, a veces es más fácil establecer variables de entorno que modificar scripts de inicio y experimentar con JAZ_IGNORE_USER_TUNING y JAZ_BYPASS puede resultar útil al evaluar jaz.
Plan de desarrollo
- ⚙️ Perfiles de configuración de JVM
- 📦 Compatibilidad con AppCDS
- 🔄 Ajuste continuo
- 📊 Telemetría
- 📦 Compatibilidad con Leyden
Registro de cambios
0.0.0-preview+20260408.1
- Actualizaciones de dependencias.
0.0.0-preview+20260403.2
- Actualizaciones de dependencias.
0.0.0-preview+20260323.1
- Actualizaciones de dependencias.
0.0.0-preview+20260223.1
- Actualizaciones de dependencias.
0.0.0-preview+20260120.1
- Actualizaciones de dependencias.
0.0.0-preview+20251211.7
- Actualizaciones de dependencias.
- Otras correcciones de errores.
0.0.0-preview+20251205.1
- Correcciones de errores internas.
0.0.0-preview+20251126.1
- Agregue Compilación de Microsoft de OpenJDK 25 a la lista de versiones certificadas.
0.0.0-preview+20251120.1
- Actualizaciones de dependencias.
0.0.0-preview+20251118.1
- Acceder a la versión preliminar pública.
- Implemente paquetes RPM y DEB.
- Mejorar los ajustes del recolector de basura de desasignaciones.
- Dejar de emitir una salida de diagnóstico poco clara cuando el programa Java termine con un código distinto de cero.
- Mejore el reenvío de señales del sistema operativo al proceso de Java, por ejemplo,
SIGTERMySIGINT.- La detención de un contenedor que ejecuta una aplicación de Java ahora da tiempo a la aplicación para apagarse correctamente.
- Quite el uso de
PrintFlagsFinal, lo que mejora la compatibilidad con determinadas aplicaciones Java.- Corrija las llamadas que lanzan excepciones.
- Corrección del buffer de flujo stdout:
jazya no retrasa la retransmisión de la salida hasta que detecta un carácter de nueva línea.
- Otras correcciones de errores y mejoras en la resistencia interna.
Versión preliminar privada 2
- Correcciones de errores.
- Se ha ampliado la compatibilidad de distribución de Linux mediante la reducción de los requisitos de glibc.
-
jazahora detecta si hay algún ajuste manual de JVM presente y, en tal caso, no aplica sus propios ajustes. -
JAZ_IGNORE_USER_TUNING=1omite el ajuste manual de la JVM si está presente y aplica en su lugar los propios ajustes de Jaz. - Se ha corregido que la salida
PrintFlagsFinalaparezca cuando no se solicita si se utilizajazcon OpenJDK HotSpot JVM 8.
Versión preliminar privada 1
- Versión inicial del iniciador de comandos de Azure para Java.
Telemetría
Azure Iniciador de comandos para Java recopila datos de uso y los envía a Microsoft para ayudar a mejorar nuestros productos y servicios. Para más información, lea nuestra declaración de privacidad.