Condividi tramite


Launcher di comandi Azure per Java (anteprima pubblica)

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

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 di Java in App contenitore di Azure, 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 Azure per Java può essere usata ovunque sia disponibile l'utilità di avvio Java in ambienti basati su Linux. È stata convalidata e testata nelle piattaforme CI/CD e Azure seguenti:

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

Anteprima pubblica

L'utilità di avvio 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 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. Inoltra invisibilmente stdout, stderr, stdin e i segnali OS da e verso il processo Java.
  5. Monitora il processo di Java e inoltra il codice di uscita quando termina.

Esempio di utilizzo

L'utilità di avvio comandi Azure per Java è intercambiabile con il comando java, senza richiedere alcuna modifica del 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 comandi 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 container per il Microsoft Build di OpenJDK. Non è necessaria alcuna configurazione.

Ad esempio, il Dockerfile seguente usa per eseguire un'applicazione Java da un 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

Per le macchine virtuali e altri ambienti Linux Azure, è possibile installare lo strumento usando la gestione pacchetti tdnf. Installare il jaz pacchetto con il comando seguente:

sudo tdnf install jaz

Altre distribuzioni Linux

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

Ad esempio, nelle distribuzioni basate su Ubuntu o Debian eseguire:

sudo apt-get install jaz

Se non è configurato il repository software Linux per Microsoft Products, seguire le istruzioni per la distribuzione linux.

Per eseguire l'installazione in Ubuntu, aprire un terminale ed eseguire i comandi seguenti:

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

Dopo aver aggiunto il repository, installare jaz eseguendo i seguenti comandi:

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

Versioni di JVM supportate

L'utilità di avvio dei comandi Azure per Java richiede che nel sistema sia presente un'installazione JDK basata su OpenJDK (versione 8 o successiva). È stato testato con:

Importante

L'utilità di avvio comandi Azure per Java richiede un'installazione completa di JDK. Non è completamente testato con installazioni JRE solo o con runtime jlink personalizzati. Per altre informazioni, vedere "Perché non funziona con i runtime JRE o jlink?".

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

0.0.0-preview+20260408.1

  • Aggiornamenti delle dipendenze.

0.0.0-preview+20260403.2

  • Aggiornamenti delle dipendenze.

0.0.0-preview+20260323.1

  • Aggiornamenti delle dipendenze.

0.0.0-preview+20260223.1

  • Aggiornamenti delle dipendenze.

0.0.0-preview+20260120.1

  • Aggiornamenti delle dipendenze.

0.0.0-preview+20251211.7

  • Aggiornamenti delle dipendenze.
  • Altre correzioni di bug.

0.0.0-preview+20251205.1

  • Correzioni di bug interne.

0.0.0-preview+20251126.1

  • Aggiungere Microsoft Build di OpenJDK 25 all'elenco delle versioni certificate.

0.0.0-preview+20251120.1

  • Aggiornamenti delle dipendenze.

0.0.0-preview+20251118.1

  • Immettere Anteprima pubblica.
  • Implementare pacchetti RPM e DEB.
  • Migliorare gli aggiustamenti di revoca del commit del Garbage Collector.
  • Interrompere l'emissione di output diagnostici poco chiari quando il programma Java termina con un codice diverso da zero.
  • Migliorare l'inoltro dei segnali del sistema operativo al processo di Java, ad esempio SIGTERM e SIGINT.
    • L'arresto di un container che esegue un'applicazione Java ora permette all'applicazione di terminare gradualmente.
  • 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 di Azure Command Launcher per Java.

Telemetria

Azure Command Launcher 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.