NonSoloSpringBoot: primi passi con Quarkus framework

In questo post faremo la conoscenza di Quarkus, un framework Java alternativo a Spring e Spring Boot.

Come riportato dagli autori sul sito ufficiale, si tratta di uno stack nativo per Kubernetes, quindi progettato per un uso specifico in applicazioni cloud.

Vedremo come creare un progetto da zero e poi in seguito faremo delle comparazioni proprio con Spring Boot di cui ci siamo ampiamente occupati su questo blog.

Per creare un nuovo progetto Quarkus abbiamo diverse alternative:

  • i plugin Maven e Gradle che ne generano la struttura e tutto il boilerplate code
  • uno starter tool online all’indirizzo https://code.quarkus.io/
  • uno dei plugin disponibili per il proprio IDE (ad esempio IntelliJ, Visual Studio, Eclipse Che)

Nel nostro caso utilizziamo lo starter tool online. Strutturalmente è simile a quello già visto per Spring Boot e di cui abbiamo parlato in questo post.

Sono richieste le tipiche informazioni di base di un qualsiasi progetto Maven.

Per questo primo esempio non aggiungeremo nessuna estensione tra quelle elencate.  RestEasy JAX-RS è l’unica inclusa di default.

quarkus-hello-world-1

Molto utile è l’indicazione dello stato di alcune di esse: preview o experimental.

Una feature interessante è l’integrazione con GitHub. In sostanza possiamo inviare il codice direttamente su un repository, che sarà creato da Quarkus con lo stesso nome del progetto.

Naturalmente dovremo effettuare l’accesso al provider e concedere l’autorizzazione quando richiesto.

quarkus-hello-world-2

A questo punto possiamo clonare sulla nostra macchina il repository appena creato (https://github.com/mcicolella/hello-world).

La struttura è quella di un classico progetto Maven con le dipendenze e le impostazioni riportate all’interno del file pom.xml. Da osservare che le versioni delle varie librerie sono raccolte all’interno del blocco iniziale delle properties.

Lanciamo la compilazione ed esecuzione in modalità sviluppo con

./mvnw compile quarkus:dev

Al primo avvio saranno scaricate tutte le librerie richieste, per cui sarà necessario attendere un po’ di tempo in funzione della velocità della propria connessione.

Tuttavia il tempo di startup è decisamente interessante. Vedremo in un successivo post le differenze con Spring Boot.

quarkus-hello-world-5

Accedendo al link http://localhost:8080 si ottiene la seguente pagina

quarkus-hello-world-6

E’ anche disponibile un’API demo all’indirizzo http://localhost:8080/hello.

Per il package dell’applicazione eseguiamo il comando

./mvnw package

che genera un file hello-world-1.0.0-SNAPSHOT-runner.jar.

Rispetto a Spring Boot viene aggiunto “runner” in coda al nome del file, ma la differenza sostanziale è che non si tratta di un “fat jar” (o “uber jar” come è anche chiamato), ovvero le dipendenze non sono incluse nel jar ma nella cartella target/lib. Questo rende il tutto meno agevole perchè bisogna gestire anche una cartella.

quarkus-hello-world-7

Fin qui è tutto più o meno simile a quanto già visto con Spring Boot.

La vera differenza consiste nella possibilità di creare delle immagini native, ovvero ottimizzate per un utilizzo in cloud.

Lo vedremo in dettaglio la prossima volta, anticipando che per una corretta comprensione degli argomenti trattati è necessaria almeno una conoscenza di base di GraalVM.

 

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

Utilizzando il sito, accetti l'invio dei cookies da parte nostra. Maggiori informazioni

Questo sito utilizza i cookies per fornire la migliore esperienza di navigazione possibile. Continuando ad utilizzarlo senza modificare le impostazioni o cliccando su "Accetta" acconsenti al loro utilizzo.

Chiudi