Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
javaBefehl durchjaz. - ☁️ 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:
- Erkennt die Cloudumgebung (z. B. Containergrenzwerte und verfügbaren Arbeitsspeicher).
- 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.
- Startet einen Java Prozess, übergibt ihn die Optimierungskennzeichnungen und alle vom Benutzer bereitgestellten Argumente.
- Invisibly leitet stdout, stderr, stdin und OS-Signale an und von dem Java-Prozess weiter.
- Ü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:
- Verwenden Sie ein Containerimage mit vorinstalliertem Tool.
- Auf Azure Linux installieren.
- Install aus dem Linux Software Repository für Microsoft-Produkte.
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:
- Eclipse Temurin OpenJDK 8 mit HotSpot JVM
- Microsoft-Build von OpenJDK 11, 17, 21 und 25.
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.
SIGTERMundSIGINT.- 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:
jazVerzögert das Weiterleiten der Ausgabe nicht mehr, bis ein Neuzeilenzeichen angezeigt wird.
- Beheben Sie Aufrufe an
- Weitere Fehlerkorrekturen und Verbesserungen der internen Resilienz.
Private Vorschau 2
- Fehlerbehebungen.
- Erweiterte Linux-Distro-Kompatibilität durch Reduzierung der Glibc-Anforderungen.
-
jazerkennt nun, ob ein manuelles JVM-Tuning vorhanden ist und in diesem Fall keine eigenen Anpassungen angewendet werden. -
JAZ_IGNORE_USER_TUNING=1ignoriert manuelle JVM-Optimierungen, falls vorhanden, und wendet stattdessen jaz' eigene Einstellungen an. - Bei Verwendung
PrintFlagsFinalmit OpenJDK HotSpot JVM 8 wird eine festejazAusgabe (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.