Dela via


Azure Kommandostartsprogram för Java (offentlig förhandsversion)

Azure Command Launcher för Java (jaz) är ett enkelt verktyg som förenklar hur Java utvecklare kör sina program på Azure. Genom att intelligent tillämpa JVM-alternativ (Java Virtual Machine) som är skräddarsydda för molnmiljöer minskar verktyget konfigurationskostnaderna och förbättrar resursutnyttjandet direkt, med högre potential för bättre prestanda.

Det här verktyget är idealiskt för utvecklare som:

  • Vill ha bättre JVM-standardvärden utan att dyka djupt in i justeringsguider.
  • Utveckla och distribuera molnbaserade mikrotjänster med ramverk som Spring Boot, Quarkus eller Micronaut.
  • Föredrar containerbaserade arbetsflöden som Kubernetes och OpenShift.
  • Distribuera Java arbetsbelastningar på Azure Container Apps, Azure Kubernetes Service, Azure Red Hat OpenShift eller Azure Virtual Machines.

Viktiga funktioner

  • 🛠 Justerar automatiskt JVM-flaggor för molnbaserade distributioner.
  • 🚀 Plug-and-play-upplevelse. Släpp bara i Dockerfile eller starta skriptet och ersätt java kommandot med jaz.
  • ☁️ Optimerad för Azure miljöer.
  • 🔧 Anpassningsbara via miljövariabler. Det finns flera sätt att distribuera konfigurationsändringar på ett säkert sätt.

Miljötyper som stöds

Azure-kommandostartaren för Java kan användas överallt där Java-startprogrammet är tillgängligt i Linux-baserade miljöer. Den har verifierats och testats på följande Azure- och CI/CD-plattformar:

  • 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

Offentlig förhandsversion

Azure-kommandostartaren för Java är nu tillgänglig i offentlig förhandsversion! Läs det offentliga förhandsversionsmeddelandet för en introduktion till det här verktyget och dess fördelar.

Så här fungerar det

Azure-kommandostartaren för Java finns mellan startkommandot för din container eller virtuella dator och JVM. När du startar verktyget gör du följande:

  1. Identifierar molnmiljön (till exempel containergränser och tillgängligt minne).
  2. Analyserar arbetsbelastningstypen och väljer JVM-justeringsflaggor som passar bäst, till exempel:
    • Heapstorlekshantering.
    • Val och justering av skräpinsamlare.
    • Loggnings- och diagnostikinställningar efter behov.
  3. Startar en Java process och skickar den justeringsflaggor och eventuella argument som tillhandahålls av användaren.
  4. Reläerar osynligt stdout, stderr, stdin och OS-signaler till och från Java-processen.
  5. Övervakar Java processen och vidarebefordrar slutkoden när den avslutas.

Exempel på användning

Kommandostartaren Azure för Java är en drop-in ersättning för kommandot java, vilket inte kräver några kodändringar. java Ersätt helt enkelt med jaz i startskripten, till exempel ersätt java -jar foo.jar med jaz -jar foo.jar.

I stället för att justera JVM-alternativen manuellt:

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

Använd jaz:

jaz -jar myapp.jar

Programmet kan automatiskt dra nytta av:

  • Stridstestade standardvärden för molnbaserade arbetsbelastningar och containerarbetsbelastningar.
  • Minskat minnesavfall i molnet.
  • Bättre start- och uppvärmningsprestanda.

Installation

Azure-kommandostartaren för Java är tillgänglig för både x64 och arm64 Linux. De installationsmetoder som stöds är:

Containeravbildningar

Verktyget ingår i container-avbildningarna för Microsoft Build för OpenJDK. Ingen mer konfiguration krävs.

Följande Dockerfile använder till exempel jaz för att köra ett Java program från en jar-fil:

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

Installera på Azure Linux

För virtuella datorer och andra Azure Linux-miljöer kan du installera verktyget med hjälp av pakethanteraren tdnf. jaz Installera paketet med följande kommando:

sudo tdnf install jaz

Andra Linux-distributioner

Om du redan har konfigurerat Linux-programvarulagringsplatsen för Microsoft-produkter kör du lämpligt pakethanterarkommando för distributionen för att installera paketet jaz.

På Ubuntu- eller Debianbaserade distributioner kör du till exempel:

sudo apt-get install jaz

Om du inte har konfigurerat Linux Software Repository for Microsoft Products följer du anvisningarna för din Linux-distribution.

Om du vill installera på Ubuntu öppnar du en terminal och kör följande kommandon:

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

När lagringsplatsen har lagts till installerar du jaz genom att köra följande kommandon:

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

JVM-versioner som stöds

Azure-kommandostartaren för Java kräver att en OpenJDK-baserad JDK-installation (version 8 eller senare) finns i systemet. Den har testats med:

Viktigt!

Azure-kommandostartaren för Java kräver en fullständig JDK-installation. Den är inte helt testad med enbart JRE-installationer eller anpassade jlink-miljöer. Mer information finns i "Varför fungerar det inte med JRE- eller jlink-körningar?".

Konfiguration

Kommandot jaz använder inga kommandoradsargument för sin egen konfiguration. Som standard skickar den i stället alla argument direkt till java kommandot. För att säkerställa att jaz konfigurationen inte stör programmets argument godkänner jaz du bara konfigurationen via miljövariabler.

Kommandot jaz kan konfigureras med hjälp av dessa miljövariabler:

Miljövariabel Beskrivning
JAZ_HELP Ange 1 för att skriva ut ett hjälpmeddelande och avsluta med koden 0.
JAZ_PRINT_VERSION Ställ in till 1 för att skriva ut jaz-versionen till stdout och avsluta med koden 0.
JAZ_DRY_RUN Ställ in 1 för att skriva ut kommandot java som ska köras och avsluta med koden 1.
JAZ_BYPASS Ställ in till 1 för att förbigå jaz optimeringsjusteringar. Ingen effekt på telemetri.
JAZ_IGNORE_USER_TUNING Ställ in på 1 för att ignorera alla användardefinierade justeringsflaggor och tillämpa jaz-justering i stället. Annars jaz justeras bara JVM om den inte identifierar några justeringsflaggor från användaren. Mer information om hur fungerar med och utan att aktivera den här inställningen finns jaz.
JAZ_EXIT_WITHOUT_FLUSH Ställ in till 1 för att hoppa över räkningen av telemetri vid avslut. På så sätt undviks potentiella fördröjningar (upp till 30 sekunder) jaz vid rensning av data, däremot kan jaz fortfarande skicka telemetri.

Om du använder miljövariabler i stället för kommandoradsargument blir det också enklare att konfigurera jaz i vissa fall. När du distribuerar ett containerbaserat program är det ibland enklare att ange miljövariabler än att ändra startskript och experimentera med JAZ_IGNORE_USER_TUNING och JAZ_BYPASS kan vara användbart när du utvärderar jaz.

Översikt

  • ⚙️ JVM-konfigurationsprofiler
  • 📦 Stöd för AppCDS
  • 🔄 Kontinuerlig justering
  • 📊 Telemetri
  • 📦 Leyden-stöd

Ändringslogg

0.0.0-preview+20260408.1

  • Beroendeuppdateringar.

0.0.0-preview+20260403.2

  • Beroendeuppdateringar.

0.0.0-preview+20260323.1

  • Beroendeuppdateringar.

0.0.0-preview+20260223.1

  • Beroendeuppdateringar.

0.0.0-preview+20260120.1

  • Beroendeuppdateringar.

0.0.0-preview+20251211.7

  • Beroendeuppdateringar.
  • Andra felkorrigeringar.

0.0.0-preview+20251205.1

  • Interna felkorrigeringar.

0.0.0-preview+20251126.1

  • Lägg till Microsoft Build för OpenJDK 25 i listan över certifierade versioner.

0.0.0-preview+20251120.1

  • Beroendeuppdateringar.

0.0.0-preview+20251118.1

  • Ange offentlig förhandsversion.
  • Implementera RPM- och DEB-paket.
  • Förbättra justeringar för skräpinsamlaren som inte har återkräftts.
  • Sluta generera otydlig diagnostisk output när Java-programmet avslutas med en annan kod än noll.
  • Förbättra os-signalvidarebefordring till Java process, till exempel SIGTERM och SIGINT.
    • Om du stoppar en container som kör ett Java program får programmet nu tid att stängas av på ett korrekt sätt.
  • Ta bort användningen av PrintFlagsFinal, vilket förbättrar kompatibiliteten med vissa Java program.
    • Åtgärda anrop till System.console() som kastar undantag.
    • Åtgärda stdout-strömbuffertning: jaz fördröjer inte längre vidarebefordran av utdata förrän ett nytt radtecken visas.
  • Andra felkorrigeringar och förbättringar av intern motståndskraft.

Privat förhandsversion 2

  • Buggkorrigeringar.
  • Utökad Linux-distributionskompatibilitet genom att minska glibc-kraven.
  • jaz identifierar nu om någon manuell JVM-justering finns och i sådana fall tillämpar den inte sina egna justeringar.
  • JAZ_IGNORE_USER_TUNING=1 ignorerar manuell JVM-justering om den finns och tillämpar jazs egna justeringar i stället.
  • Åtgärdade problemet med att PrintFlagsFinal-utdata visas utan att det begärts när jaz används med OpenJDK HotSpot JVM 8.

Privat förhandsversion 1

  • Första versionen av Azure Command Launcher för Java.

Telemetri

Azure Command Launcher för Java samlar in användningsdata och skickar dem till Microsoft för att förbättra våra produkter och tjänster. Mer information finns i vår sekretesspolicy.