Delen via


Azure opdrachtstarter voor Java (publieke preview)

Het startprogramma voor Azure opdrachten voor Java (jaz) is een lichtgewicht hulpprogramma dat vereenvoudigt hoe Java ontwikkelaars hun toepassingen uitvoeren op Azure. Door op intelligente wijze Java JVM-opties (Virtual Machine) toe te passen die zijn afgestemd op cloudomgevingen, vermindert het hulpprogramma de overhead van de configuratie en verbetert het resourcegebruik, met een hoger potentieel voor betere prestaties.

Dit hulpprogramma is ideaal voor ontwikkelaars die:

  • Wilt u betere standaardinstellingen voor JVM zonder diep in afstemmingsgidsen te duiken.
  • Ontwikkel en implementeer cloudeigen microservices met frameworks zoals Spring Boot, Quarkus of Micronaut.
  • Geef de voorkeur aan werkstromen op basis van containers, zoals Kubernetes en OpenShift.
  • Implementeer Java workloads op Azure Container Apps, Azure Kubernetes Service, Azure Red Hat OpenShift of Azure Virtuele Machines.

Belangrijkste kenmerken

  • 🛠 JVM-vlaggen automatisch tunesen voor cloudimplementaties.
  • 🚀 Plug-and-play-ervaring. Voeg gewoon toe aan uw Dockerfile of startscript, waarbij u de java opdracht vervangt door jaz.
  • ☁️ Geoptimaliseerd voor Azure omgevingen.
  • 🔧 Aanpasbaar via omgevingsvariabelen. Er zijn verschillende manieren om configuratiewijzigingen veilig uit te rollen.

Ondersteunde omgevingen

Het Azure startprogramma voor opdrachten voor Java kan worden gebruikt waar het startprogramma voor Java beschikbaar is in Linux-omgevingen. Het is gevalideerd en getest op de volgende Azure- en CI/CD-platforms:

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

Openbare preview

Het Azure Command Launcher voor Java is nu beschikbaar in publieke preview. Lees de aankondiging van de openbare preview voor een inleiding tot dit hulpprogramma en de voordelen ervan.

Hoe het werkt

Het Azure Command Launcher voor Java bevindt zich tussen de startopdracht van uw container of virtuele machine en de JVM. Wanneer u het hulpprogramma start, doet u het volgende:

  1. Detecteert de cloudomgeving (bijvoorbeeld containerlimieten en beschikbaar geheugen).
  2. Analyseert het workloadtype en selecteert best passende JVM-afstemmingsvlagmen, zoals:
    • Heap grootte.
    • De selectie en afstemming van de Garbage Collector.
    • Instellingen voor logboekregistratie en diagnostische gegevens, indien nodig.
  3. Start een Java proces, waarbij de afstemmingsvlagmen en eventuele door de gebruiker verstrekte argumenten worden doorgegeven.
  4. Onvisibly geeft stdout-, stderr-, stdin- en os-signalen door naar en van het Java proces.
  5. Bewaakt het Java proces en stuurt de afsluitcode door wanneer deze wordt beëindigd.

Voorbeeld van gebruik

Het Azure Command Launcher voor Java is een vervanging voor de java-opdracht en vereist geen codewijzigingen. Vervang gewoon java door jaz in uw startscripts, bijvoorbeeld java -jar foo.jar door jaz -jar foo.jar.

In plaats van uw JVM-opties handmatig af te stemmen:

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

Gebruik jaz:

jaz -jar myapp.jar

Uw toepassing kan automatisch profiteren van:

  • Bewezen standaardinstellingen voor cloudeigen en containerworkloads.
  • Minder geheugenverspilling in de cloud.
  • Betere opstart- en opwarmprestaties.

Installatie

Het Azure startprogramma voor opdrachten voor Java is beschikbaar voor zowel x64 als arm64 Linux. De ondersteunde installatiemethoden zijn:

Containerafbeeldingen

Het hulpprogramma is opgenomen in de containerimages voor de Microsoft Build van OpenJDK. Er is geen installatie meer nodig.

In het volgende Dockerfile wordt bijvoorbeeld jaz gebruikt om een Java-toepassing uit te voeren vanuit een bestand jar:

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

Installeren op Azure Linux

Voor virtuele machines en andere Azure Linux-omgevingen kunt u het hulpprogramma installeren met behulp van de tdnf package manager. Installeer het jaz pakket met de volgende opdracht:

sudo tdnf install jaz

Andere Linux-distributies

Als u de Linux-softwareopslagplaats al hebt ingesteld voor Microsoft-producten, voert u de juiste pakketbeheeropdracht uit voor uw distributie om het jaz-pakket te installeren.

Voer bijvoorbeeld in Ubuntu- of Debian-distributies het volgende uit:

sudo apt-get install jaz

Als u de Linux-softwareopslagplaats voor Microsoft-producten niet hebt ingesteld, volgt u de instructies voor uw Linux-distributie.

Als u wilt installeren op Ubuntu, opent u een terminal en voert u de volgende opdrachten uit:

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

Nadat de opslagplaats is toegevoegd, installeert jaz u deze door de volgende opdrachten uit te voeren:

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

Ondersteunde JVM-versies

Voor het Azure startprogramma voor opdrachten voor Java moet op OpenJDK gebaseerde JDK-installatie (versie 8 of hoger) aanwezig zijn op het systeem. Het is getest met:

Belangrijk

Voor het Azure opdrachtstartprogramma voor Java is een volledige JDK-installatie vereist. Het is niet volledig getest met alleen JRE-installaties of aangepaste jlink-runtimes. Zie 'Waarom werkt het niet met JRE- of jlink-runtimes?' voor meer informatie.

Configuratie

De jaz opdracht gebruikt geen opdrachtregelargumenten voor een eigen configuratie. In plaats daarvan worden standaard alle argumenten rechtstreeks doorgegeven aan de java opdracht. Om ervoor te zorgen dat jaz de configuratie geen invloed heeft op de argumenten van uw toepassing, jaz accepteert u alleen configuratie via omgevingsvariabelen.

De jaz opdracht kan worden geconfigureerd met behulp van deze omgevingsvariabelen:

Omgevingsvariabele Beschrijving
JAZ_HELP Ingesteld om een helpbericht af te drukken en af te sluiten met code 1.
JAZ_PRINT_VERSION Stel in op 1 om de jaz versie naar stdout af te drukken en af te sluiten met code 0.
JAZ_DRY_RUN Stel in op 1 om de java-opdracht af te drukken die zal worden uitgevoerd en sluiten af met code 1.
JAZ_BYPASS Ingesteld om 1 te omzeilen jaz bij optimalisatieaanpassingen. Geen effect op telemetrie.
JAZ_IGNORE_USER_TUNING Ingesteld om 1 alle door de gebruiker geleverde afstemmingsvlaggen te negeren en in plaats daarvan jaz afstemming toe te passen. jaz Anders wordt de JVM alleen afgestemd als er geen door de gebruiker geleverde afstemmingsvlagmen worden gedetecteerd. Zie 'Wat gebeurt er als ik al een aantal JVM-opties in mijn omgeving heb ingesteld?' voor meer informatie over het jaz gedrag met en zonder deze instelling in te schakelen.
JAZ_EXIT_WITHOUT_FLUSH Stel in op 1 om het leegmaken van telemetrie bij het afsluiten over te slaan. Dit voorkomt potentiële vertragingen (maximaal 30s) jaz tijdens het leegmaken van gegevens, maar jaz kan nog steeds telemetrie verzenden.

Het gebruik van omgevingsvariabelen in plaats van opdrachtregelargumenten maakt het in sommige gevallen ook eenvoudiger om te configureren jaz . Bij het implementeren van een containertoepassing is het soms eenvoudiger om omgevingsvariabelen in te stellen dan startscripts te wijzigen en te experimenteren met JAZ_IGNORE_USER_TUNING en JAZ_BYPASS kan het nuttig zijn bij het evalueren jaz.

Routekaart

  • ⚙️ JVM-configuratieprofielen
  • 📦 Ondersteuning voor AppCDS
  • 🔄 Doorlopend afstemmen
  • 📊 Telemetrie
  • 📦 Ondersteuning voor Leyden

Wijzigingenlogboek

0.0.0-preview+20260408.1

  • Afhankelijkheidsupdates.

0.0.0-preview+20260403.2

  • Afhankelijkheidsupdates.

0.0.0-preview+20260323.1

  • Afhankelijkheidsupdates.

0.0.0-preview+20260223.1

  • Afhankelijkheidsupdates.

0.0.0-preview+20260120.1

  • Afhankelijkheidsupdates.

0.0.0-preview+20251211.7

  • Afhankelijkheidsupdates.
  • Andere oplossingen voor fouten.

0.0.0-preview+20251205.1

  • Interne foutenreparaties.

0.0.0-preview+20251126.1

  • Voeg Microsoft Build van OpenJDK 25 toe aan een lijst met gecertificeerde versies.

0.0.0-preview+20251120.1

  • Afhankelijkheidsupdates.

0.0.0-preview+20251118.1

  • Voer openbare preview in.
  • RPM- en DEB-pakketten implementeren.
  • Verbeter aanpassingen voor de garbagecollector.
  • Stop met het genereren van onduidelijke diagnostische uitvoer wanneer een Java-programma wordt afgesloten met een code ongelijk aan nul.
  • Verbeter het doorsturen van het besturingssysteemsignaal naar Java proces, bijvoorbeeld SIGTERM en SIGINT.
    • Als u een container stopt waarop een Java-toepassing wordt uitgevoerd, krijgt de toepassing nu de tijd om de toepassing probleemloos af te sluiten.
  • Verwijder het gebruik van PrintFlagsFinal, waardoor de compatibiliteit met bepaalde Java toepassingen wordt verbeterd.
    • Herstel aanroepen om uitzonderingen te System.console() genereren.
    • Stdout-stroombuffering opgelost: jaz de uitvoer wordt niet langer vertraagd totdat er een nieuw regelteken wordt weergegeven.
  • Andere bugfixes en verbeteringen in interne tolerantie.

Privévoorbeeld 2

  • Bugfixes.
  • Uitgebreide compatibiliteit met Linux-distributies door glibc-vereisten te verminderen.
  • jaz detecteert nu of er handmatige JVM-afstemming aanwezig is en in dat geval worden er geen eigen aanpassingen toegepast.
  • JAZ_IGNORE_USER_TUNING=1 negeert handmatige JVM-afstemming indien aanwezig en past in plaats daarvan de eigen afstemmingsaanpassingen van Jaz toe.
  • Er is een vaste PrintFlagsFinal uitvoer weergegeven (indien niet aangevraagd) bij gebruik jaz met OpenJDK HotSpot JVM 8.

Privévoorbeeld 1

  • Initiële release van Azure opdrachtstartprogramma voor Java.

Telemetrie

Azure opdrachtstartprogramma voor Java verzamelt gebruiksgegevens en verzendt deze naar Microsoft om onze producten en services te verbeteren. Lees onze privacyverklaring voor meer informatie.