Freigeben über


Azure Befehlsstartprogramm für Java (öffentliche Vorschau)

Das Azure-Befehlsstartprogramm für Java (jaz) ist ein einfaches Hilfsprogramm, das vereinfacht, wie Java Entwickler ihre Anwendungen auf Azure ausführen. Durch intelligentes Anwenden von Java Virtual Machine (JVM)-Optionen, die auf Cloudumgebungen zugeschnitten sind, reduziert das Tool den Konfigurationsaufwand und verbessert die Ressourcenauslastung sofort 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 Service, Azure Red Hat OpenShift oder Azure Virtual Machines 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.
  • ☁️ Für Azure Umgebungen optimiert.
  • 🔧 Anpassbar über Umgebungsvariablen. Es gibt verschiedene Möglichkeiten zum sicheren Rollout von Konfigurationsänderungen.

Unterstützte Umgebungen

Das Azure-Befehlsstartprogramm für Java kann überall verwendet werden, wo das Java Launcher 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
  • Azure App Service
  • Azure Functions
  • Azure Red Hat OpenShift (ARO)
  • Azure Virtual Machines
  • Azure DevOps
  • GitHub Codespaces
  • GitHub Actions

Öffentliche Vorschau

Das Azure-Befehlsstartprogramm 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 Befehlsstartprogramm 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. Invisibly leitet stdout, stderr, stdin und OS-Signale an und von dem 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 Befehl java, 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-Befehlsstartprogramm 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.

Die folgende Dockerfile-Datei verwendet z. B. jaz, um eine Java Anwendung aus einer datei jar auszuführen:

# 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

Für virtuelle Computer und andere Azure Linux-Umgebungen können Sie das Tool mithilfe des Paket-Managers tdnf installieren. Installieren Sie das jaz Paket mit dem folgenden Befehl:

sudo tdnf install jaz

Andere Linux-Distributionen

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 Paket jaz zu installieren.

Führen Sie beispielsweise auf Ubuntu oder Debian-basierten Distributionen Folgendes aus:

sudo apt-get install jaz

Wenn Sie nicht über das Linux-Software-Repository für Microsoft Produkte verfügen, befolgen Sie die Anweisungen für Ihre Linux-Verteilung.

Um auf Ubuntu zu installieren, öffnen Sie ein Terminal, und führen Sie die folgenden Befehle aus:

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

Fügen Sie das Repository hinzu und installieren Sie jaz, indem Sie die folgenden Befehle ausführen:

sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install jaz

Unterstützte JVM-Versionen

Für das Azure-Befehlsstartprogramm für Java ist eine OpenJDK-basierte JDK-Installation (Version 8 oder höher) erforderlich, die auf dem System vorhanden ist. Es wurde getestet mit:

Von Bedeutung

Für das Azure-Befehlsstartprogramm für Java ist eine vollständige JDK-Installation erforderlich. 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

0.0.0-preview+20260408.1

  • Abhängigkeits-Updates.

0.0.0-preview+20260403.2

  • Abhängigkeits-Updates.

0.0.0-preview+20260323.1

  • Abhängigkeits-Updates.

0.0.0-preview+20260223.1

  • Abhängigkeits-Updates.

0.0.0-preview+20260120.1

  • Abhängigkeits-Updates.

0.0.0-vorschau+20251211.7

  • Abhängigkeits-Updates.
  • Andere Fehlerbehebungen.

0.0.0-vorschau+20251205.1

  • Interne Fehlerbehebungen.

0.0.0-vorschau+20251126.1

  • Fügen Sie Microsoft-Build von OpenJDK 25 zur Liste der zertifizierten Versionen hinzu.

0.0.0-vorschau+20251120.1

  • Abhängigkeits-Updates.

0.0.0-preview+20251118.1

  • Geben Sie die öffentliche Vorschau ein.
  • Implementieren Sie RPM- und DEB-Pakete.
  • Optimieren Sie die Freigabeanpassungen des Garbage Collectors.
  • Beenden Sie das Ausgeben unklarer Diagnostikausgaben, wenn das Java-Programm mit einem Nicht-Null-Code beendet wird.
  • Verbessern Sie die Signalweiterleitung des Betriebssystems an Java Prozess, z. B. SIGTERM und SIGINT.
    • Wenn ein Container mit einer Java-Anwendung gestoppt wird, hat die Anwendung jetzt Zeit, sanft herunterzufahren.
  • Entfernen Sie die Verwendung von PrintFlagsFinal, um die Kompatibilität mit bestimmten Java Anwendungen zu verbessern.
    • 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-Befehlsstartfelds für Java.

Telemetrie

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