Dela via


Azure Command Launcher för Java (privat förhandsversion)

Azure Command Launcher för Java (jaz) är ett enkelt verktyg som förenklar hur Java-utvecklare kör sina program i Azure. Genom att intelligent tillämpa JVM-alternativ (Java Virtual Machine) som är skräddarsydda för molnmiljöer, jaz minskar 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 i 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. Om du föredrar jaz JVM-konfigurationsrekommendationer tar du bort alla JVM-justeringsflaggor från din befintliga kommandostartare
  • 🔧 Anpassningsbar via miljövariabler

Privat förhandsversion

Verktyget är tillgängligt för nedladdning av kunder som ansökte om vår privata förhandsversion. Du kan skicka din begäran om att gå med i den privata förhandsversionen.

Så här fungerar det

jaz sitter mellan startkommandot för din container eller virtuella dator och JVM. När du startar jaz kommer det:

  1. Identifierar molnmiljön (till exempel containergränser och tillgängligt minne)
  2. Analyserar arbetsbelastningstypen och väljer JVM-alternativ som passar bäst
  3. Startar Java-processen med optimerade flaggor, till exempel:
    • Storleksändring för heap
    • Val och justering av skräpinsamlare
    • Loggnings- och diagnostikinställningar efter behov

Exempel på användning

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

I privat förhandsversion distribueras programvaran som en tar.gz fil, med binärfiler för x64 och arm64, och kan enkelt installeras i containeravbildningar.

FROM mcr.microsoft.com/openjdk/jdk:21-ubuntu

# Install jaz
COPY jaz-versionstring.tar.gz /tmp/
RUN tar -xzf /tmp/jaz-versionstring.tar.gz -C / && mv /jaz*/jaz /usr/bin

# Add your application.jar
COPY application.jar /application.jar

CMD ["jaz", "-jar", "application.jar"]

JVM-versioner som stöds

jaz stöder OpenJDK HotSpot JVM version 8, 11, 17 och 21.

jaz testas med Microsoft Build of OpenJDK och Eclipse Temurin.

Konfiguration

Kommandot jaz kan bara konfigureras med hjälp av miljövariabler, eftersom alla argument för måste jaz vara kompatibla med java startprogrammet.

Miljövariabel Beskrivning
JAZ_HELP Ställ in 1 för att skriva ut ett hjälpmeddelande.
JAZ_PRINT_VERSION Ställ in 1 för att skriva ut Jaz-versionen till stdout och avsluta med utgångskod 0.
JAZ_DRY_RUN Ställ in till 1 för att skriva ut det Java-kommando som skulle köras och avsluta med kod 1.
JAZ_BYPASS Ange 1 för att kringgå jaz-optimeringsinställningar. Användbart när växlingen tillbaka till java är störande, till exempel i containeriserade miljöer. Ingen effekt på telemetri.
JAZ_IGNORE_USER_TUNING Ange till 1 för att trimma användardefinierade justeringsparametrar. Möjliggör för jaz att finjustera JVM i fler fall.
JAZ_EXIT_WITHOUT_FLUSH Ställ in till 1 för att hoppa över räkningen av telemetri vid avslut. Undviker fördröjningar (upp till 30s) jaz kan introducera vid tömning av data. Kan fortfarande skicka telemetri.
JAZ_SKIP_PRINT_FLAGS_FINAL Ställ in på 1 för att hoppa över att skicka -XX:+PrintFlagsFinal. Undviker stdout-skanning/buffring, vilket jaz gör för att fastställa slutgiltiga JVM-flaggor.
JAZ_ALWAYS_FILTER_PRINT_FLAGS_FINAL_STDOUT Ställ in 1 för att alltid filtrera bort PrintFlagsFinal från STDOUT. Normalt filtrerar jaz endast om den identifierar att flaggan skickades. Ignoreras om JAZ_SKIP_PRINT_FLAGS_FINAL har angetts.

Översikt

  • 📦 Linux-paket (DEB/RPM) och containeravbildningar
  • ⚙️ JVM-konfigurationsprofiler
  • 📦 AppCDS-stöd
  • 📦 Leyden-support
  • 🔄 Kontinuerlig justering
  • 📊 Telemetri som delas via Prometheus

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.