Freigeben über


Azure Command Launcher für Java (öffentliche Vorschau)

Das Azure Command Launcher für Java (jaz) ist ein einfaches Hilfsprogramm, das vereinfacht, wie Java-Entwickler ihre Anwendungen auf Azure ausführen. Durch die intelligente Anwendung von Java Virtual Machine (JVM)-Optionen, die auf Cloudumgebungen zugeschnitten sind, reduziert das Tool den Konfigurationsaufwand und verbessert die Ressourcenauslastung aus der Box und bietet ein höheres Potenzial für eine bessere Leistung.

Dieses Tool eignet sich ideal für Entwickler, die:

  • Wollen Sie bessere JVM-Standardwerte, ohne tief in Tuning-Leitfäden einzusteigen.
  • Entwickeln und Bereitstellen von cloudeigenen Microservices mit Frameworks wie Spring Boot, Quarkus oder Micronaut.
  • Bevorzugen Sie containerbasierte Workflows wie Kubernetes und OpenShift.
  • Stellen Sie Java-Workloads auf Azure-Container-Apps, Azure Kubernetes-Dienst, Azure Red Hat OpenShift oder virtuellen Azure-Computern bereit.

Wichtigste Funktionen

  • 🛠 Optimiert JVM-Flags für cloud-native Bereitstellungen automatisch.
  • 🚀 Plug-and-Play-Erfahrung. Fügen Sie es einfach in Ihr Dockerfile oder Startskript ein, und ersetzen Sie den java Befehl durch jaz.
  • ☁️ Optimiert für Azure-Umgebungen.
  • 🔧 Anpassbar über Umgebungsvariablen. Es gibt verschiedene Möglichkeiten zum sicheren Rollout von Konfigurationsänderungen.

Unterstützte Umgebungen

Das Azure Command Launcher für Java kann überall verwendet werden, wo das Java-Startfeld in Linux-basierten Umgebungen verfügbar ist. Sie wurde auf den folgenden Azure- und CI/CD-Plattformen überprüft und getestet:

  • Azure Kubernetes Service (AKS)
  • Azure Container Apps – ein Dienst für containerbasierte Anwendungen
  • Azure App Service
  • Azure-Funktionen
  • Azure Red Hat OpenShift (ARO)
  • Azure-virtuelle Maschinen
  • Azure DevOps
  • GitHub Codespaces
  • GitHub-Aktionen

Öffentliche Vorschau

Das Azure Command Launcher für Java ist jetzt in der öffentlichen Vorschau verfügbar! Lesen Sie die Ankündigung der öffentlichen Vorschau für eine Einführung in dieses Tool und deren Vorteile.

Funktionsweise

Das Azure Command Launcher für Java befindet sich zwischen Ihrem Container- oder virtuellen Computerstartbefehl und dem JVM. Wenn Sie das Tool starten, wird folgendes angezeigt:

  1. Erkennt die Cloudumgebung (z. B. Containergrenzwerte und verfügbaren Arbeitsspeicher).
  2. Analysiert den Workloadtyp und wählt optimale JVM-Optimierungsflags aus, z. B.:
    • Heap-Größenanpassung.
    • Auswahl und Optimierung des Garbage Collector.
    • Protokollierung und Diagnoseeinstellungen nach Bedarf.
  3. Startet einen Java-Prozess, übergibt ihn die Optimierungskennzeichnungen und alle vom Benutzer bereitgestellten Argumente.
  4. Leitet unsichtbar stdout, stderr, stdin und Betriebssystem-Signale an den und vom Java-Prozess weiter.
  5. Überwacht den Java-Prozess und leitet den Ausgangscode weiter, wenn er beendet wird.

Anwendungsbeispiel

Das Azure-Befehlsstartprogramm für Java ist ein Drop-In-Ersatz für den java Befehl, der keine Codeänderungen erfordert. Ersetzen Sie einfach java durch jaz in Ihren Startskripten—zum Beispiel, ersetzen Sie java -jar foo.jar durch jaz -jar foo.jar.

Anstatt Ihre JVM-Optionen manuell zu optimieren:

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

Verwenden Sie jaz:

jaz -jar myapp.jar

Ihre Anwendung kann automatisch von folgendem Vorteil profitieren:

  • Bewährte Standardeinstellungen für cloud-native und Container-Workloads.
  • Verringerte Speicherverschwendung in der Cloud.
  • Bessere Start- und Aufwärmeleistung.

Installation

Das Azure Command Launcher für Java ist sowohl für x64 als auch für arm64 Linux verfügbar. Die unterstützten Installationsmethoden sind:

Containerimages

Das Tool ist in den Container-Images für den Microsoft Build von OpenJDK enthalten. Es ist keine weitere Einrichtung erforderlich.

In dieser Dockerfile-Datei wird jaz beispielsweise eine Java-Anwendung aus einer jar Datei ausgeführt:

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

Installieren auf Azure Linux

Installieren Sie das jaz Paket mit dem folgenden Befehl:

sudo tdnf install jaz

Installieren aus dem Linux-Software-Repository für Microsoft-Produkte

Wenn Sie bereits das Linux-Software-Repository für Microsoft-Produkte eingerichtet haben, führen Sie den entsprechenden Paket-Manager-Befehl für Ihre Verteilung aus, um das jaz Paket zu installieren.

Suchen Sie andernfalls die Anweisungen, die Ihrer Linux-Verteilung entsprechen, in der folgenden Liste. Folgen Sie den Anweisungen, installieren Sie jaz jedoch anstelle des Pakets msopenjdk-25 .

Unterstützte JVM-Versionen

Das Azure-Befehlsstartprogramm für Java unterstützt OpenJDK-basierte Builds und wurde getestet mit:

Von Bedeutung

Das Azure Command Launcher für Java erfordert eine vollständige JDK-Installation. Es ist nicht vollständig mit JRE-Only-Installationen oder benutzerdefinierten jlink-Runtimes getestet worden. Weitere Informationen finden Sie unter "Warum funktioniert es nicht mit JRE- oder jlink-Laufzeiten?".

Konfiguration

Der jaz Befehl verwendet keine Befehlszeilenargumente für seine eigene Konfiguration. Stattdessen werden standardmäßig alle Argumente direkt an den java Befehl übergeben. Um sicherzustellen, dass die jaz Konfiguration die Argumente Ihrer Anwendung nicht beeinträchtigt, jaz akzeptiert die Konfiguration nur über Umgebungsvariablen.

Der jaz Befehl kann mithilfe dieser Umgebungsvariablen konfiguriert werden:

Umgebungsvariable Beschreibung
JAZ_HELP Setzen Sie auf 1, um eine Hilfenachricht zu drucken und das Programm mit Code 0 zu beenden.
JAZ_PRINT_VERSION Setzen Sie 1, um die jaz-Version in Stdout auszugeben und mit Code 0 zu beenden.
JAZ_DRY_RUN Setzen Sie auf 1, um den Befehl java auszugeben, der ausgeführt und mit dem Code 1 beendet wird.
JAZ_BYPASS Legen Sie 1 fest, um jaz Optimierungsanpassungen zu umgehen. Keine Auswirkung auf Telemetrie.
JAZ_IGNORE_USER_TUNING Legen Sie 1 fest, um alle vom Benutzer bereitgestellten Tuning-Flags zu ignorieren und stattdessen jaz Tuning anzuwenden. Andernfalls wird die JVM nur optimiert, wenn jaz keine vom Benutzer bereitgestellten Tuning-Parameter erkannt werden. Lesen Sie "Was geschieht, wenn ich bereits einige JVM-Optionen in meiner Umgebung festgelegt habe?" , um weitere Informationen darüber zu erfahren, wie jaz sich das Verhalten mit und ohne Aktivieren dieser Einstellung verhält.
JAZ_EXIT_WITHOUT_FLUSH Legen Sie 1 fest, um das Leeren der Telemetrie beim Beenden zu überspringen. Dadurch werden potenzielle Verzögerungen (bis zu 30s) jaz vermieden, die beim Schreiben der Daten auftreten könnten, jedoch könnte jaz weiterhin Telemetrie senden.

Die Verwendung von Umgebungsvariablen anstelle von Befehlszeilenargumenten erleichtert auch die Konfiguration jaz in einigen Fällen. Bei der Bereitstellung einer containerisierten Anwendung ist es manchmal einfacher, Umgebungsvariablen festzulegen, als Startskripte zu ändern, und während der Auswertung mit JAZ_IGNORE_USER_TUNING und JAZ_BYPASS zu experimentieren kann nützlich sein, wenn jaz bewertet wird.

Fahrplan

  • ⚙️ JVM-Konfigurationsprofile
  • 📦 AppCDS-Unterstützung
  • 🔄 Kontinuierliche Optimierung
  • 📊 Telemetrie
  • 📦 Leyden-Support

Änderungsprotokoll

Öffentliche Vorschau 1: 0.0.0-Vorschau+20251118.1

  • Implementieren Sie RPM- und DEB-Pakete.
  • Optimieren Sie die Freigabeanpassungen des Garbage Collectors.
  • Stoppen Sie die Ausgabe einer nicht eindeutigen Diagnostikausgabe, wenn ein Java-Programm mit einem nicht-null Code endet.
  • Verbessern Sie die Signalweiterleitung des Betriebssystems an den Java-Prozess, wie SIGTERM und SIGINT.
    • Wenn ein Container beendet wird, der eine Java-Anwendung ausführt, kann die Anwendung jetzt ordnungsgemäß heruntergefahren werden.
  • Entfernen Sie die Verwendung von PrintFlagsFinalund verbessern Sie die Kompatibilität mit bestimmten Java-Anwendungen.
    • Beheben Sie Aufrufe an System.console(), die Ausnahmen auslösen.
    • Korrigieren Sie die Pufferung des Stdout-Datenstroms: jaz Verzögert das Weiterleiten der Ausgabe nicht mehr, bis ein Neuzeilenzeichen angezeigt wird.
  • Weitere Fehlerkorrekturen und Verbesserungen der internen Resilienz.

Private Vorschau 2

  • Fehlerbehebungen.
  • Erweiterte Linux-Distro-Kompatibilität durch Reduzierung der Glibc-Anforderungen.
  • jaz erkennt nun, ob ein manuelles JVM-Tuning vorhanden ist und in diesem Fall keine eigenen Anpassungen angewendet werden.
  • JAZ_IGNORE_USER_TUNING=1 ignoriert manuelle JVM-Optimierungen, falls vorhanden, und wendet stattdessen jaz' eigene Einstellungen an.
  • Bei Verwendung PrintFlagsFinal mit OpenJDK HotSpot JVM 8 wird eine feste jaz Ausgabe (wenn nicht angefordert) angezeigt.

Private Vorschau 1

  • Erste Version des Azure Command Launcher für Java.

Telemetrie

Azure Command Launcher für Java sammelt Nutzungsdaten und sendet sie an Microsoft, um unsere Produkte und Dienste zu verbessern. Weitere Informationen finden Sie in unseren Datenschutzbestimmungen.