VERT.X Un TOOLKIT per creare applicazioni reattive
Caratteristiche Event Driven Non Bloccante Leggero (il core occupa circa 650Kb) Veloce (comparazione indipendente) Non è un application server Modulare Ideale per creare microservices Può essere usato con altri framework Ci fai quello che vuoi (WA, Http/Rest, MB) WA: Web Application MB: Message Bus
Qualsiasi Linguaggio Java, JavaScript, Groovy, Ruby, Ceylon, Scala and Kotlin. Puoi scegliere il linguaggio che preferisci in base allo skill-set del team e/o a cosa devi sviluppare Api identiche per ogni linguaggio
Java
Javascript
Kotlin
Breve Storia 17/06/11 - First commit in project "Node.x" 10/10/11 - Node.x v0.1 released (at this stage it was called Node.x not Vert.x) 09/05/12 - Vert.x 1.0 final released 12/12 - Tim Fox leaves VMware 01/13 - Tim Fox joins Red Hat 01/13 - All parties agree for Vert.x to join Eclipse Foundation 17/07/13 - Vert.x 2.0 final released 08/13 - Vert.x joins Eclipse Foundation 2017 Vert.x 3.42
Concetti Base È un Toolkit non un Application Server, un Container o un Framework e non è una libreria. Basta mettere la dipendenza nel pom.xml per iniziare È Reactive: Responsive (Risponde in un tempo ragionevole) Resistente agli errori Si adatta ai carichi di lavori Usa una coda di messaggi asincroni È orientato agli eventi e non è bloccante Eventi mandati su un event loop che non si bloccano mai
Non Bloccante
Possibilità di sviluppo Si posso creare applicazioni distribuite via TCP, HTTP (server e client) o Event Bus Event Bus Type: Point to Point (Il messaggio è mandato a un singolo indirizzo che lo consuma) Publish/Subscribe (Il messaggio è ricevuto da tutti quelli che sono in ascolto sull’indirizzo) Request/Replay (il messaggio vine mandato ad un solo indirizzo che manda una risposta al sender)
Base di Sviluppo Verticles: Una maniera di strutturare il codice di un applicazione Verticle: pezzo di codice che viene deploiato sopra un instanza di di Vert.x. Ha accesso ad una instanza di vertx e può deploiare a sua volta altri verticles
Cosa serve per iniziare Java 8 Maven Linguaggio a scelta tra quelli menzionati prima Un ide (meglio se c’è ma non indispensabile)
… il codice https://github.com/marcorotondi/Vert.x.git
Accesso non bloccante ai db 1
Accesso non bloccante ai db 2
Q&A Se posso vi rispondo