Condividi tramite


Launcher dei comandi di Azure per Java (anteprima pubblica)

L'utilità di avvio dei comandi di Azure per Java (jaz) è un'utilità leggera che semplifica il modo in cui gli sviluppatori Java eseguono le applicazioni in Azure. Applicando in modo intelligente le opzioni JVM (Java Virtual Machine) personalizzate per gli ambienti cloud, lo strumento riduce il sovraccarico di configurazione e migliora l'utilizzo delle risorse predefinito, con un potenziale più elevato di prestazioni migliori.

Questo strumento è ideale per gli sviluppatori che:

  • Si vogliono impostazioni predefinite JVM migliori senza approfondire le guide di ottimizzazione.
  • Sviluppare e distribuire microservizi nativi del cloud con framework come Spring Boot, Quarkus o Micronaut.
  • Preferisce flussi di lavoro basati su contenitori, ad esempio Kubernetes e OpenShift.
  • Distribuire carichi di lavoro Java in app Azure Container, servizio Azure Kubernetes, Azure Red Hat OpenShift o macchine virtuali di Azure.

Funzionalità principali

  • 🛠 Ottimizza automaticamente i flag JVM per le distribuzioni native del cloud.
  • 🚀 Esperienza plug-and-play. È sufficiente inserire nel Dockerfile o nello script di avvio, sostituendo il comando java con jaz.
  • ☁️ Ottimizzato per gli ambienti Azure.
  • 🔧 Personalizzabile tramite variabili di ambiente. Esistono diversi modi per implementare in modo sicuro le modifiche alla configurazione.

Ambienti supportati

L'utilità di avvio dei comandi di Azure per Java può essere usata ovunque sia disponibile l'utilità di avvio Java negli ambienti basati su Linux. È stato convalidato e testato nelle piattaforme di Azure e CI/CD seguenti:

  • Il Servizio Azure Kubernetes (AKS)
  • App contenitore di Azure
  • Servizio app di Azure
  • Azure Functions
  • Azure Red Hat OpenShift (ARO)
  • Macchine virtuali di Azure
  • Azure DevOps
  • GitHub Codespaces
  • GitHub Actions

Anteprima pubblica

L'utilità di avvio dei comandi di Azure per Java è ora disponibile in anteprima pubblica. Leggere l'annuncio dell'anteprima pubblica per un'introduzione a questo strumento e i relativi vantaggi.

Come funziona

L'utilità di avvio dei comandi di Azure per Java si trova tra il comando di avvio del contenitore o della macchina virtuale e la JVM. Quando si avvia lo strumento, è possibile:

  1. Rileva l'ambiente cloud, ad esempio i limiti dei contenitori e la memoria disponibile.
  2. Analizza il tipo di carico di lavoro e seleziona i flag di ottimizzazione JVM più adatti, ad esempio:
    • Ridimensionamento dell'heap.
    • Selezione e ottimizzazione del Garbage Collector.
    • Impostazioni di registrazione e diagnostica in base alle esigenze.
  3. Avvia un processo Java, passando i flag di ottimizzazione e tutti gli argomenti forniti dall'utente.
  4. Trasferisce in modo invisibile stdout, stderr, stdin e i segnali di sistema operativo da e verso il processo Java.
  5. Monitora il processo Java e inoltra il codice di uscita quando termina.

Esempio di utilizzo

L'utilità di avvio dei comandi di Azure per Java è una sostituzione diretta del comando java, che non richiede modifiche al codice. Sostituire semplicemente java con jaz nei tuoi script di avvio, ad esempio sostituire java -jar foo.jar con jaz -jar foo.jar.

Anziché ottimizzare manualmente le opzioni di JVM:

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

Usare jaz:

jaz -jar myapp.jar

L'applicazione può trarre vantaggio automaticamente da:

  • Impostazioni predefinite collaudate per carichi di lavoro cloud-native e containerizzati.
  • Riduzione degli sprechi di memoria nel cloud.
  • Migliori prestazioni di avvio e riscaldamento.

Installazione

L'utilità di avvio dei comandi di Azure per Java è disponibile sia per Linux x64 che per arm64. I metodi di installazione supportati sono:

Immagini dei contenitori

Lo strumento è incluso nelle immagini dei contenitori per Microsoft Build di OpenJDK. Non è necessaria alcuna configurazione.

Ad esempio, questo Dockerfile usa jaz per eseguire un'applicazione Java da un jar file:

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

Installare in Azure Linux

Installare il jaz pacchetto con il comando seguente:

sudo tdnf install jaz

Eseguire l'installazione dal repository software Linux per prodotti Microsoft

Se è già stato configurato il repository software Linux per i prodotti Microsoft, eseguire il comando di gestione pacchetti appropriato per la distribuzione per installare il jaz pacchetto.

In caso contrario, trovare le istruzioni che corrispondono alla distribuzione linux nell'elenco seguente. Seguire le istruzioni, ma installare jaz anziché il msopenjdk-25 pacchetto.

Versioni di JVM supportate

L'utilità di avvio dei comandi di Azure per Java supporta le compilazioni basate su OpenJDK ed è stata testata con:

Configurazione

Il jaz comando non utilizza argomenti della riga di comando per la propria configurazione. Invece, per impostazione predefinita, passa tutti gli argomenti direttamente al comando java. Per assicurarsi che jaz la configurazione non interferisca con gli argomenti dell'applicazione, jaz accetta solo la configurazione tramite variabili di ambiente.

Il jaz comando può essere configurato usando queste variabili di ambiente:

Variabile di ambiente Descrizione
JAZ_HELP Impostare 1 per stampare un messaggio di aiuto e uscire con il codice 0.
JAZ_PRINT_VERSION Impostare su 1 per stampare versione jaz su stdout e terminare con il codice 0.
JAZ_DRY_RUN Impostare su 1 per stampare il comando java che verrebbe eseguito e uscire con il codice 1.
JAZ_BYPASS Impostare su 1 per ignorare jaz le regolazioni dell'ottimizzazione. Nessun effetto sui dati di telemetria.
JAZ_IGNORE_USER_TUNING Impostare su 1 per ignorare tutti i flag di ottimizzazione forniti dall'utente e applicare invece l'ottimizzazione jaz. In caso contrario, jaz ottimizza la JVM solo se non rileva flag di ottimizzazione forniti dall'utente. Vedere "Cosa accade se sono già state impostate alcune opzioni JVM nell'ambiente?" per altre informazioni sul jaz comportamento con e senza abilitare questa impostazione.
JAZ_EXIT_WITHOUT_FLUSH Impostare su 1 per ignorare lo scaricamento dei dati di telemetria all'uscita. In questo modo si evitano potenziali ritardi (fino a 30s) che jaz potrebbe introdurre durante il flush dei dati; tuttavia, jaz potrebbe comunque inviare dati di telemetria.

L'uso di variabili di ambiente anziché argomenti della riga di comando semplifica anche la configurazione jaz in alcuni casi. Quando si distribuisce un'applicazione in contenitori, talvolta è più semplice impostare le variabili di ambiente rispetto alla modifica degli script di avvio e sperimentare con JAZ_IGNORE_USER_TUNING e JAZ_BYPASS può essere utile durante la valutazione di jaz.

Cartina stradale

  • ⚙️ Profili di configurazione JVM
  • 📦 Supporto di AppCDS
  • 🔄 Regolazione continua
  • 📊 Telemetria
  • 📦 Supporto di Leyden

Registro modifiche

Anteprima pubblica 1: 0.0.0-preview+20251118.1

  • Implementare pacchetti RPM e DEB.
  • Migliorare gli aggiustamenti di revoca del commit del Garbage Collector.
  • Interrompere l'emissione di output diagnostico poco chiaro quando il programma Java termina con un codice diverso da zero.
  • Migliorare l'inoltro dei segnali del sistema operativo al processo Java, SIGTERM ad esempio e SIGINT.
    • L'arresto di un contenitore che esegue un'applicazione Java ora dà all'applicazione il tempo di chiudersi in modo graduale.
  • Rimuovere l'uso di PrintFlagsFinal, migliorando la compatibilità con determinate applicazioni Java.
    • Correggere le chiamate a System.console() che generano eccezioni.
    • Correzione del buffer del flusso stdout: jaz non ritarda più l'inoltro dell'output fino a quando non vede un carattere di nuova riga.
  • Altre correzioni di bug e miglioramenti alla resilienza interna.

Anteprima privata 2

  • Correzioni di bug.
  • Compatibilità delle distribuzioni Linux espansa riducendo i requisiti glibc.
  • jaz ora rileva se è presente un'ottimizzazione manuale di JVM e in questo caso non applica le proprie regolazioni.
  • JAZ_IGNORE_USER_TUNING=1 ignora l'ottimizzazione manuale di JVM, se presente, e applica invece le regolazioni di ottimizzazione di jaz.
  • Correzione PrintFlagsFinal dell'output visualizzato (quando non richiesto) se si usa jaz con OpenJDK HotSpot JVM 8.

Anteprima privata 1

  • Versione iniziale dell'utilità di avvio dei comandi di Azure per Java.

Telemetria

L'utilità di avvio dei comandi di Azure per Java raccoglie i dati di utilizzo e li invia a Microsoft per migliorare i prodotti e i servizi. Per altre informazioni, leggere l'informativa sulla privacy.