Partager via


Lanceur de commandes Azure pour Java (préversion publique)

Le lanceur de commandes Azure pour Java (jaz) est un utilitaire léger qui simplifie la façon dont les développeurs Java exécutent leurs applications sur Azure. En appliquant intelligemment des options de JVM (Java Virtual Machine) adaptées aux environnements cloud, l'outil réduit la surcharge de configuration et améliore l'utilisation des ressources prêt à l'emploi, avec un potentiel plus élevé afin d'optimiser les performances.

Cet outil est idéal pour les développeurs qui :

  • Vous souhaitez de meilleures valeurs par défaut de JVM sans plonger profondément dans les repères de réglage.
  • Développez et déployez des microservices natifs dans le cloud avec des infrastructures telles que Spring Boot, Starterus ou Micronaute.
  • Préférez les flux de travail basés sur des conteneurs tels que Kubernetes et OpenShift.
  • Déployez des charges de travail Java sur Azure Container Apps, Azure Kubernetes Service, Azure Red Hat OpenShift ou des machines virtuelles Azure.

Fonctionnalités clés

  • 🛠 Ajuste automatiquement les indicateurs JVM pour les déploiements natifs cloud.
  • Expérience 🚀 plug-and-play. Ajoutez simplement cela à votre fichier Dockerfile ou à votre script de lancement, en remplaçant la commande java par jaz.
  • ☁️ Optimisé pour les environnements Azure.
  • 🔧 Personnalisable via des variables d’environnement. Il existe plusieurs façons de déployer en toute sécurité les modifications de configuration.

Environnements pris en charge

Le lanceur de commandes Azure pour Java peut être utilisé partout où le lanceur Java est disponible dans les environnements Linux. Il a été validé et testé sur les plateformes Azure et CI/CD suivantes :

  • Azure Kubernetes Service (AKS)
  • Azure Container Apps (Applications de Conteneur Azure)
  • Azure App Service
  • Azure Functions
  • Azure Red Hat OpenShift (ARO)
  • Machines virtuelles Azure
  • Azure DevOps
  • GitHub Codespaces
  • GitHub Actions

Aperçu public

Le lanceur de commandes Azure pour Java est désormais disponible en préversion publique ! Lisez l’annonce de la préversion publique pour une présentation de cet outil et de ses avantages.

Fonctionnement

Le lanceur de commandes Azure pour Java se trouve entre votre commande de démarrage de conteneur ou de machine virtuelle et la machine virtuelle JVM. Lorsque vous lancez l’outil, il :

  1. Détecte l’environnement cloud (par exemple, les limites de conteneur et la mémoire disponible).
  2. Analyse le type de charge de travail et sélectionne les indicateurs de réglage JVM les mieux adaptés, tels que :
    • Dimensionnement du tas.
    • Sélection et ajustement du ramasse-miettes.
    • Paramètres de journalisation et de diagnostic en fonction des besoins.
  3. Lance un processus Java, en lui transmettant les indicateurs de paramétrage et tous les arguments fournis par l’utilisateur.
  4. Invisibly relaye stdout, stderr, stdin et les signaux du système d’exploitation vers et depuis le processus Java.
  5. Surveille le processus Java et relaye son code de sortie lorsqu’il se termine.

Exemple d’utilisation

Le lanceur de commandes Azure pour Java est un remplacement direct de la commande java, ne nécessitant aucune modification du code. Remplacez simplement java par jaz dans vos scripts de lancement — par exemple, remplacez java -jar foo.jar par jaz -jar foo.jar.

Au lieu de régler manuellement vos options JVM :

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

Utilisez jaz :

jaz -jar myapp.jar

Votre application peut bénéficier automatiquement des avantages suivants :

  • Valeurs par défaut éprouvées pour les charges de travail cloud native et conteneur.
  • Réduction des déchets de mémoire dans le cloud.
  • Meilleures performances de démarrage et de préchauffement.

Installation

Le lanceur de commandes Azure pour Java est disponible pour Linux x64 et arm64. Les méthodes d’installation prises en charge sont les suivantes :

Images de conteneur

L’outil est inclus dans les images de conteneur pour la build Microsoft d’OpenJDK. Aucune configuration supplémentaire n’est nécessaire.

Par exemple, ce fichier Dockerfile utilise jaz pour exécuter une application Java à partir d’un jar fichier :

# 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"]

Installer sur Azure Linux

Installez le jaz package avec la commande suivante :

sudo tdnf install jaz

Installer à partir du référentiel logiciel Linux pour les produits Microsoft

Si vous avez déjà configuré le référentiel logiciel Linux pour les produits Microsoft, exécutez la commande de gestionnaire de package appropriée pour votre distribution pour installer le jaz package.

Sinon, recherchez les instructions qui correspondent à votre distribution Linux dans la liste suivante. Suivez les instructions, mais installez jaz au lieu du msopenjdk-25 package.

Versions de JVM prises en charge

Le lanceur de commandes Azure pour Java prend en charge les builds basées sur OpenJDK et a été testé avec :

Important

Le lanceur de commandes Azure pour Java nécessite une installation complète de JDK. Il n’est pas entièrement testé avec des installations JRE uniquement ou des runtimes jlink personnalisés. Pour plus d’informations, consultez « Pourquoi ne fonctionne-t-il pas avec les runtimes JRE ou jlink ? ».

Paramétrage

La jaz commande ne consomme aucun argument de ligne de commande pour sa propre configuration. Au lieu de cela, par défaut, il transmet tous les arguments directement à la java commande. Pour vous assurer que la jaz configuration n’interfère pas avec les arguments de votre application, jaz accepte uniquement la configuration via des variables d’environnement.

La jaz commande peut être configurée à l’aide de ces variables d’environnement :

Variable d'environnement Description
JAZ_HELP Définissez 1 pour imprimer un message d’aide et quitter avec le code 0.
JAZ_PRINT_VERSION Définir à 1 pour imprimer la version jaz sur stdout et quitter avec le code 0.
JAZ_DRY_RUN Définissez 1 pour imprimer la commande java qui serait exécutée et quitter avec le code 1.
JAZ_BYPASS Définissez 1 pour contourner jaz les ajustements d’optimisation. Aucun effet sur la télémétrie.
JAZ_IGNORE_USER_TUNING Définissez sur 1 pour ignorer tous les indicateurs de réglage fournis par l'utilisateur et appliquer à la place le réglage jaz. Sinon, jaz n'ajustera la JVM que si aucun indicateur de réglage fourni par l'utilisateur n'est détecté. Consultez « Que se passe-t-il si j’ai déjà défini certaines options JVM dans mon environnement ? » pour plus d’informations sur jaz le comportement et sans activer ce paramètre.
JAZ_EXIT_WITHOUT_FLUSH Définissez la valeur à 1 pour ignorer le vidage des données de télémétrie lors de la sortie. Cela évite les retards potentiels (jusqu’à 30s) que jaz pourrait introduire lors du vidage des données, mais jaz peut toujours envoyer des données de télémétrie.

L’utilisation de variables d’environnement plutôt que d’arguments de ligne de commande facilite également la configuration jaz dans certains cas. Lors du déploiement d’une application conteneurisée, il est parfois plus facile de définir des variables d’environnement que de modifier des scripts de lancement et d’expérimenter JAZ_IGNORE_USER_TUNING et JAZ_BYPASS peut être utile lors de l’évaluation jaz.

Feuille de route

  • ⚙️ Profils de configuration JVM
  • 📦 Prise en charge d’AppCDS
  • 🔄 Réglage continu
  • 📊 Télémétrie
  • 📦 Prise en charge de Leyden

Journal des modifications

Préversion publique 1 : 0.0.0-preview+20251118.1

  • Implémentez des packages RPM et DEB.
  • Améliorer les ajustements de désengagement du ramasse-miettes.
  • Arrêtez d’émettre des résultats de diagnostic flous lorsque le programme Java se termine avec un code différent de zéro.
  • Améliorer le transfert de signal du système d’exploitation vers le processus Java, par exemple, SIGTERM et SIGINT.
    • L’arrêt d’un conteneur exécutant une application Java donne maintenant le temps à l’application de s’arrêter correctement.
  • Supprimez l’utilisation de PrintFlagsFinal, améliorant la compatibilité avec certaines applications Java.
    • Corriger les appels à System.console() générant des exceptions.
    • Correction du buffering du flux stdout : jaz ne retarde plus le retransmet de la sortie jusqu'à ce qu'il rencontre un caractère de nouvelle ligne.
  • Autres correctifs de bogues et améliorations de la résilience interne.

Préversion privée 2

  • Correctifs de bogues.
  • Compatibilité des distributions Linux étendue en réduisant les exigences de glibc.
  • jaz détecte maintenant si un réglage JVM manuel est présent et, dans ce cas, il n’applique pas ses propres ajustements.
  • JAZ_IGNORE_USER_TUNING=1 ignore le réglage manuel de JVM s’il est présent et applique les propres réglages de jaz à la place.
  • Correction de l'affichage PrintFlagsFinal de la sortie (lorsqu'elle n'est pas demandée) lors de l'utilisation de jaz avec OpenJDK HotSpot JVM 8.

Préversion privée 1

  • Version initiale du lanceur de commandes Azure pour Java.

Télémétrie

Le lanceur de commandes Azure pour Java collecte les données d’utilisation et les envoie à Microsoft pour améliorer nos produits et services. Pour en savoir plus, lisez notre déclaration de confidentialité.