Nota:
- Questa esercitazione è disponibile in un ambiente di laboratorio gratuito fornito da Oracle.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti Oracle Cloud Infrastructure. Al termine del laboratorio, sostituire questi valori con quelli specifici del tuo ambiente cloud.
TASK 5: creazione di un'immagine nativa di un'applicazione Micronaut e distribuzione in Oracle Cloud
In questo laboratorio imparerai come trasformare la tua applicazione Java in un eseguibile Linux nativo con l'immagine nativa GraalVM. Una volta eseguita la distribuzione su una virtual machine in Oracle Cloud.
Tempo stimato: 20 minuti
Contenuto task
In questo task sarà possibile:
- Eseguire un'applicazione Micronaut sulla JVM in Oracle Cloud
- Creare un eseguibile Linux nativo dell'applicazione Micronaut
- Distribuisci l'applicazione Micronaut come eseguibile nativo in Oracle Cloud
- Configurare il firewall per consentire il traffico su un'istanza cloud (facoltativo)
Passo 1: eseguire un'applicazione Micronaut sulla JVM in Oracle Cloud
In questo passo verrà distribuita un'applicazione Micronaut tradizionalmente sulla JVM (da un file JAR) in Oracle Cloud. Si continuerà a utilizzare il codice VS in cui GraalVM Enterprise 22.0.0 è impostato come JDK predefinito.
-
Passare a Terminal, quindi a New Terminal ed eseguire questo comando per verificare la versione Java:
java -version
Ogni volta che si richiama il comando
java
, verrà applicato il compilatore GRA, abilitato per impostazione predefinita in GraalVM Enterprise. -
È possibile creare il package di un progetto Java in un file JAR eseguibile e avviare l'applicazione dal terminale codice VS o richiamando l'azione Esegui principale.
-
Andare a Terminale, quindi a Nuovo terminale ed eseguire l'obiettivo
mn:run
../mvnw mn:run
Se si utilizza Gradle, eseguire il task
run
:./gradlew run
-
In alternativa, trovare il file di classe
Application.java
nel codice VS, fare clic su Esegui principale sopra il metodo principale:L'applicazione viene avviata sulla porta 8080. Annotare il tempo necessario per avviarlo (si prevede che inizi in circa 6500 ms).
-
-
Arresta l'applicazione:
CTLR +C
Passo 2: creare un eseguibile Linux nativo di un'applicazione Micronaut
Puoi trasformare qualsiasi applicazione Java in un eseguibile nativo con l'immagine nativa di GraalVM. Si tratta di una tecnologia di compilazione in anticipo che consente di convertire il tuo bytecode Java in un binario nativo autocontenuto che non richiede l'esecuzione di JDK ed è progettato per eseguire in un ambiente di destinazione specifico.
Come già indicato, per comodità degli utenti, GraalVM Enterprise 22 è preinstallato sulla tua virtual machine. La stessa è l'immagine nativa, aggiunta con tutte le librerie dipendenti (ad esempio, libstdc++-static
, glibc
, zlib
e così via). La utility native-image
si trova nella directory di installazione di GraalVM ($JAVA_HOME/bin
).
-
Nella finestra Terminale codice VS verificare la versione dell'immagine nativa:
native-image --version
-
Eseguire questo comando singolo per creare un eseguibile Linux nativo:
- Se si utilizza Maven, specificare il formato di packaging
native-image
:
./mvnw clean package -Dpackaging=native-image
- Se si utilizza Gradle, eseguire il task
nativeImage
:
./gradlew nativeCompile
Dopo qualche tempo, un eseguibile nativo denominato
ocidemo
verrà integrato nella directory/target/native-image/
. Se si utilizza Gradle, l'eseguibile denominatoocidemo
verrà scritto nella cartella/build/native/nativeCompile/
.Nota: il tempo necessario per creare un eseguibile dipende dalle dimensioni e dalla complessità dell'applicazione e può richiedere del tempo su VM a basso consumo. Utilizzando la capacità dell'istanza VM allocata per questo laboratorio, il tempo previsto è di circa 5 minuti.
- Se si utilizza Maven, specificare il formato di packaging
GraalVM Native Image crea un file eseguibile con tutte le classi di applicazioni, le classi di librerie dipendenti, le classi JDK dipendenti e uno snapshot dell'heap dell'applicazione. Sebbene la creazione di un'immagine nativa possa richiedere tempo, i vantaggi includono una riduzione significativa dei tempi di avvio e una riduzione del consumo complessivo di memoria.
Passo 3: distribuisci l'applicazione Micronaut in OCI
Nel passo precedente hai creato un eseguibile Linux nativo dell'applicazione Micronaut. Ora distribuisci questo eseguibile nativo in Oracle Cloud e confronta i tempi di avvio quando esegui la stessa applicazione da un file JAR e come immagine nativa.
Per distribuire l'applicazione come eseguibile nativo, richiamare un file binario generato nel passo precedente:
- Se è stato utilizzato Maven:
./target/ocidemo
- Se ha usato Gradle:
./build/native/nativeCompile/ocidemo
Prendere nota della velocità di avvio di questo microservizio Micronaut come immagine nativa rispetto a un file JAR al Passo 1 (deve passare da circa 6500 millisecondi a 2500). Il programma si avvia più rapidamente perché il file eseguibile è un file binario auto-contenuto e non richiede un JDK per l'esecuzione, rendendo così facile distribuire le applicazioni. La dimensione dei file è anche abbastanza piccola.
La distribuzione di un microservizio Java come eseguibile nativo contribuisce a raggiungere l'avvio istantaneo, a ridurre il consumo di CPU e memoria, rendendo GraalVM Enterprise un buon candidato per creare applicazioni Java native nel cloud e per le distribuzioni cloud.
L'applicazione è in esecuzione a questo punto, ma per accedervi, ad esempio da un browser, sarà necessario consentire il traffico in entrata alla virtual machine. Arrestare l'applicazione, CTRL+C
, e procedere al passo successivo.
Passo 4: configurare il firewall per consentire il traffico sull'istanza cloud (facoltativo)
Per verificare questa applicazione lato server in esecuzione in Oracle Cloud e aprirla in un browser, è necessario assicurarsi che il firewall host consenta il traffico sulla virtual machine.
-
Tornare alla console cloud, accedere a Computazione, quindi a Istanze.
-
Dopo aver eseguito il login alla console OCI, passare a Computazione e fare clic su Istanze. Assicurarsi di trovarsi nel compartimento necessario (vedere il task 1, passo 3).
-
Trovare l'istanza VM (nome che inizia con graal-workshop-...) nella vista principale e aprirla.
-
Nella sezione VNIC primaria fare clic su Subnet a cui è collegata l'istanza (subnet-01).
-
Nella pagina della subnet, fare clic su Lista di sicurezza interna.
-
Premere Aggiungi regola di entrata e inserire i dati seguenti.
La regola consente al traffico da tutte le origini di utilizzare la porta 8080, in modo che l'applicazione possa essere raggiunta ovunque.
-
Tornare alla finestra del terminale ed eseguire i comandi seguenti per riavviare il firewall nell'istanza VM in esecuzione.
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo systemctl reload firewalld
-
Riavviare l'applicazione come eseguibile nativo.
Costruito con Maven:
./target/ocidemo
Costruito con Gradle:
./build/native/nativeCompile/ocidemo
-
Aprire l'applicazione in un browser utilizzando
http://<SERVER_IP>:8080/pets
per l'endpoint/pet
ehttp://<SERVER_IP>:8080/owners
per l'endpoint/owners
. In alternativa, dividere la finestra del terminale in VS Code e inviare una richiesta GET concurl
:curl -i http://<SERVER_IP>:8080/pets
Congratulazioni. Questo laboratorio è stato completato.
Per saperne di più
-
Ottieni un'esperienza pratica in laboratorio utilizzando l'immagine nativa GraalVM e inizia a creare applicazioni Java cloud native eseguendo il laboratorio GraalVM Native Image Quick Start.
-
Consulta la documentazione di GraalVM Enterprise
-
Video introduttivo sulla creazione di applicazioni serverless multicloud con Micronaut e GraalVM.
Video per la creazione di applicazioni multicloud senza server con Micronaut e GraalVM
Per terminare questa sessione, fare clic sul pulsante Fine sessione nella barra degli strumenti.