Konferencija Javantura Zagreb 2014 by HUJAK
Vert.x – asinkroni, skalabilni i poliglotni framework nove generacije by Mihovil Rister
Vert.x (vertx.io) je relativno novi, asinkroni, poliglotni framework uvjetovan događajima te baziran na JVM-u, a svojevremeno jedan od najpraćenijih projekata na GitHubu. Također, bio je i razlog ozbiljnih napetosti između Red Hata i VMwarea, koje su umalo zaustavile projekt. Cilj ovog predavanja je predstaviti Vert.x svijet, pokazati osnove, te ponuditi najbolja iskustva, prakse i preporuke pri njegovoj uporabi.
Konferencija Javantura Zagreb 2014 by HUJAK
Alfresco – Neo4j integracija – nova vrsta CMS aplikacija by Damir Murat
Graph baze imaju mnoge primjene, a jedna od njih je obogaćivanje i novi način pretraživanja i korištenja postojećih podataka. Ako prateći tu ideju povežemo CMS sustav Alfresco (www.alfresco.com) i graph bazu podataka Neo4j (www.neo4j.org), otvara se mogućnost kreiranja nove vrste CMS aplikacija. Dodamo li u mješavinu još i tehnologije kao što su Ext JS, D3.js i Grails, rezultat može biti vrlo atraktivan za krajnjeg korisnika.
Konferencija Javantura Zagreb 2014 by HUJAK
Java na klijentskoj strani – ima li budućnosti? by Ivan Vučak
U proteklih nekoliko godina Java se pozicionirala kao tehnologija izrade serverskih komponenti, ali kao da se zaboravlja da se Java koristila iza izradu Rich Internet aplikacija (RIA). Da li je Java konkurentna na području RIA te koliku ulogu u tome imaju razni sigurnosni standardi? Kako održavati postojeće RIA sustave uz općenito nepovjerenje ostalih sustava prema Java klijentskim aplikacijama? U ovom predavanju bavit ćemo se usporedbom Jave s ostalim tehnologijama te pokazati zašto strepimo kod svakog Java update-a.
Panel diskusija - usporedba Web frameworka (IT Showoff)IT Showoff
Kod izrade web projekta postoje razne mogućnosti odabira frameworka na kojem će se projekt bazirati. Mi smo odlučili izdvojili pet glavnih frameworka te oko njih izgraditi kvalitetnu panel diskusiju.
Vjerujemo da većina developera koji će sudjelovati na IT Showoff konferenciji su barem u jednom trenutku svoje karijere radili web site ili web aplikaciju na nekom od odabranih frameworka. Isto tako, vjerojatnost da su koristili, i temeljito isprobali sve njih, je vrlo mala. Zato nam je cilj putem kompetentnih stručnjaka pokušati publici prenijeti iskustva vezana za pojedine tehnologije, njihova osnovna svojstva, prednosti i mane.
Panelisti su svi od reda pravi majstori svog zanata, te će usporedno proći važna svojstva svakog frameworka i usporediti ga s drugima.
Konferencija Javantura Zagreb 2014 by HUJAK
What’s new in WildFly 8 by Tomaž Cerar
WildFly 8 (née JBoss Application Server, www.wildfly.org) je Red Hat-ov open source Java EE 7 compliant application server. Sadrži robusnu implementaciju za WebSocket, Batch, JSON, Concurrency, JMS2, JAX-RS 2, CDI 1.1 i sve Java EE 7 tehnologije. Ispod je novi cutting-edge web server koji je u WildFly 8 dizajniran za maksimalni throughput i skalabilnost, uključivo okolinu s više od milijun konekcija. Broj portova je reduciran korištenjem multipleksiranja HTTP-a pomoću HTTP Upgrade. Role Based Access Control podržava organizacije s odvojenim odgovornosti i ograničenja za upravljanje. Uloge predstavljaju različite skupove dozvola, kao što su izvođenja runtime operacija, područja konfiguracije koja se mogu čitati ili pisati, te sposobnost za audit promjena i upravljanje korisnicima. Osim toga, novi ograničeni audit log može biti omogućen zajedno s mogućnosti za offload na sigurni syslog poslužitelj. WildFly također pruža “core” distribuciju koja je idealna za autore frameworka koji žele izgraditi vlastiti application runtime pomoću snažne WildFly 8 arhitekture. NetBeans, IntelliJ i Eclipse već omogućavaju da se WildFly koristi za razvoj, deployment i debugging. Ovo predavanje će dati pregled svih tih mogućnosti pomoću nekoliko live demo-a.
Konferencija Javantura Zagreb 2014 by HUJAK
Izgradnja otvorene i besplatne EU platforme za razvoj ICT usluga za starije osobe by Andrej Grgurić
U siječnju 2014., nakon četiri godine intenzivnog rada europski istraživački projekt universAAL (www.universaal.org), sufinanciran od strane Europske Unije, uspješno je priveden kraju. Glavni rezultat projekta je, uz otvorene alate (pretezno razvijene u obliku otvorenih Eclipse plug-inova), besplatna i otvorena (ASL2.0) platforma, bazirana na OSGi tehnologiji, koja olakšava tehničku implementaciju i djeluje kao otvoren i zajednički temelj za programere.
Konferencija Javantura Zagreb 2014 by HUJAK
Java 8 JavaScript – Nashorn by Miroslav Rešetar
Java 8 donosi podršku za scripting u JavaScriptu. Engine se zove Nashorn (openjdk.java.net/projects/nashorn) i nasljednik je popularnog Rhino engine-a. Za razliku od starijeg Rhino-a, Nashorn koristi invoke dynamic Java 7 mehanizam što mu omogućava puno bolje performanse. Nashorn je moderni engine, usklađen sa ECMAScript 5.1 standardom. To omogućava uporabu popularnih JavaScript biblioteka iz Java programa što otvara neke sasvim nove načine kako implementiramo naša Java rješenja. Prezentacija ima za cilj upoznati Java developera s mogućnostima integracije JavaScript-a u buduća Java 8 rješenja.
Konferencija Javantura Zagreb 2014 by HUJAK
Vert.x – asinkroni, skalabilni i poliglotni framework nove generacije by Mihovil Rister
Vert.x (vertx.io) je relativno novi, asinkroni, poliglotni framework uvjetovan događajima te baziran na JVM-u, a svojevremeno jedan od najpraćenijih projekata na GitHubu. Također, bio je i razlog ozbiljnih napetosti između Red Hata i VMwarea, koje su umalo zaustavile projekt. Cilj ovog predavanja je predstaviti Vert.x svijet, pokazati osnove, te ponuditi najbolja iskustva, prakse i preporuke pri njegovoj uporabi.
Konferencija Javantura Zagreb 2014 by HUJAK
Alfresco – Neo4j integracija – nova vrsta CMS aplikacija by Damir Murat
Graph baze imaju mnoge primjene, a jedna od njih je obogaćivanje i novi način pretraživanja i korištenja postojećih podataka. Ako prateći tu ideju povežemo CMS sustav Alfresco (www.alfresco.com) i graph bazu podataka Neo4j (www.neo4j.org), otvara se mogućnost kreiranja nove vrste CMS aplikacija. Dodamo li u mješavinu još i tehnologije kao što su Ext JS, D3.js i Grails, rezultat može biti vrlo atraktivan za krajnjeg korisnika.
Konferencija Javantura Zagreb 2014 by HUJAK
Java na klijentskoj strani – ima li budućnosti? by Ivan Vučak
U proteklih nekoliko godina Java se pozicionirala kao tehnologija izrade serverskih komponenti, ali kao da se zaboravlja da se Java koristila iza izradu Rich Internet aplikacija (RIA). Da li je Java konkurentna na području RIA te koliku ulogu u tome imaju razni sigurnosni standardi? Kako održavati postojeće RIA sustave uz općenito nepovjerenje ostalih sustava prema Java klijentskim aplikacijama? U ovom predavanju bavit ćemo se usporedbom Jave s ostalim tehnologijama te pokazati zašto strepimo kod svakog Java update-a.
Panel diskusija - usporedba Web frameworka (IT Showoff)IT Showoff
Kod izrade web projekta postoje razne mogućnosti odabira frameworka na kojem će se projekt bazirati. Mi smo odlučili izdvojili pet glavnih frameworka te oko njih izgraditi kvalitetnu panel diskusiju.
Vjerujemo da većina developera koji će sudjelovati na IT Showoff konferenciji su barem u jednom trenutku svoje karijere radili web site ili web aplikaciju na nekom od odabranih frameworka. Isto tako, vjerojatnost da su koristili, i temeljito isprobali sve njih, je vrlo mala. Zato nam je cilj putem kompetentnih stručnjaka pokušati publici prenijeti iskustva vezana za pojedine tehnologije, njihova osnovna svojstva, prednosti i mane.
Panelisti su svi od reda pravi majstori svog zanata, te će usporedno proći važna svojstva svakog frameworka i usporediti ga s drugima.
Konferencija Javantura Zagreb 2014 by HUJAK
What’s new in WildFly 8 by Tomaž Cerar
WildFly 8 (née JBoss Application Server, www.wildfly.org) je Red Hat-ov open source Java EE 7 compliant application server. Sadrži robusnu implementaciju za WebSocket, Batch, JSON, Concurrency, JMS2, JAX-RS 2, CDI 1.1 i sve Java EE 7 tehnologije. Ispod je novi cutting-edge web server koji je u WildFly 8 dizajniran za maksimalni throughput i skalabilnost, uključivo okolinu s više od milijun konekcija. Broj portova je reduciran korištenjem multipleksiranja HTTP-a pomoću HTTP Upgrade. Role Based Access Control podržava organizacije s odvojenim odgovornosti i ograničenja za upravljanje. Uloge predstavljaju različite skupove dozvola, kao što su izvođenja runtime operacija, područja konfiguracije koja se mogu čitati ili pisati, te sposobnost za audit promjena i upravljanje korisnicima. Osim toga, novi ograničeni audit log može biti omogućen zajedno s mogućnosti za offload na sigurni syslog poslužitelj. WildFly također pruža “core” distribuciju koja je idealna za autore frameworka koji žele izgraditi vlastiti application runtime pomoću snažne WildFly 8 arhitekture. NetBeans, IntelliJ i Eclipse već omogućavaju da se WildFly koristi za razvoj, deployment i debugging. Ovo predavanje će dati pregled svih tih mogućnosti pomoću nekoliko live demo-a.
Konferencija Javantura Zagreb 2014 by HUJAK
Izgradnja otvorene i besplatne EU platforme za razvoj ICT usluga za starije osobe by Andrej Grgurić
U siječnju 2014., nakon četiri godine intenzivnog rada europski istraživački projekt universAAL (www.universaal.org), sufinanciran od strane Europske Unije, uspješno je priveden kraju. Glavni rezultat projekta je, uz otvorene alate (pretezno razvijene u obliku otvorenih Eclipse plug-inova), besplatna i otvorena (ASL2.0) platforma, bazirana na OSGi tehnologiji, koja olakšava tehničku implementaciju i djeluje kao otvoren i zajednički temelj za programere.
Konferencija Javantura Zagreb 2014 by HUJAK
Java 8 JavaScript – Nashorn by Miroslav Rešetar
Java 8 donosi podršku za scripting u JavaScriptu. Engine se zove Nashorn (openjdk.java.net/projects/nashorn) i nasljednik je popularnog Rhino engine-a. Za razliku od starijeg Rhino-a, Nashorn koristi invoke dynamic Java 7 mehanizam što mu omogućava puno bolje performanse. Nashorn je moderni engine, usklađen sa ECMAScript 5.1 standardom. To omogućava uporabu popularnih JavaScript biblioteka iz Java programa što otvara neke sasvim nove načine kako implementiramo naša Java rješenja. Prezentacija ima za cilj upoznati Java developera s mogućnostima integracije JavaScript-a u buduća Java 8 rješenja.
U Srcu razvijamo, održavamo i dajemo podršku za veliki broj sustava, gdje se svaki sastoji od niza servisa i aplikacija, broj aktivnih korisnika ide i preko 150.000 (uglavnom iz akademske zajednice), a ti sustavi rade na raznim platformama (Java, .Net, PHP, ...). Potrebe i želje korisnika za doradama, nadogradnjama i proširenjima sustava konstantno rastu kako rastu i sami sustavi. Kako bi i dalje uspješno pratili potrebe korisnika smatramo da nam treba Platform as a service (PaaS) kao temelj za daljnji razvoj i održavanje naših sustava. U prezentaciji je prezentirano u kojim segmentima rada nam PaaS može pomoći.
Predavanje sa JavaCro14 koje na primjeru CROZ-ovog proizvoda LikeMyIdea pokazuje automatizaciju release-a i instalacije. Korišteni alati i jezici: Maven, Groovy, Ant,
Jython, Shell (Batch).
GraphQL & Laravel - Efikasni API servisiPedja Jevtic
Sa najnovijom generacijom pametnih tehnologija, sve više i više uredjaja ima potrebu za podacima neophodnim za njihovu osnovnu funkcionalnost. Pametni satovi, frižideri, garažna vrata su samo neki od njih.
Razvoj i održavanje API backend aplikacije za usluživanje nekoliko generacija uređaja i njihovih specifičnih potreba postalo je veoma teško i skupo.
GraphQL pruža alternativu i promenu u paradigmi izmeštanjem odgovornosti za strukturu podataka u API pozivima ka samom klijentu. Ovo obezbedjuje optimizaciju u prenosu podataka isključujući nepotrebne podatke i u isto vreme, smanjuje kompleksnost API poziva i metoda što ujedno ubrzava i olakšava održavanje istih.
Description and analysis of MEAN stack and underlying technologies (Mongo DB, Express, Angular and Node JS). Review of development tools & techniques. Performance, best practices. Common usage scenarios, pros and cons. How to use it, when to use it, when not to use it.
Zašto je REST stil programske arhitekture tako popularan za realizaciju otvorenih informacijskih sustava? Temeljem iskustava stečenih kroz implementaciju ISVU REST API-ja (https://www.isvu.hr/api/) pokazan je postupak kako se REST API može realizirati te na koje detalje treba posebno paziti.
WinDays 13 - Internet Explorer 10 - san koji je postao javaMatija Šmalcelj
Novi Internet Explorer 10 koji dolazi sa Windows 8 i Windows phone 8 predstavlja uistinu veliki korak naprijed u svakom pogledu. Osim značajnog povećanja performansi i sigurnosti, ono što zaista oduševljava je konačno potpuna podrška za zaslone osjetljive na dodir i implementacija svih naprednijih CSS3 funkcionalnosti. Mogućnosti novog preglednika se naslućuju i u tome što je jedan od načina izrade nativnih aplikacija za Windows 8 i pomoću HTML5, CSS3 i JavaScripta. Prvi, kraći dio predavanja sadržavati će pregled novosti bitnih za programere dok će ostatak predavanja biti posvećen problemu iz stvarnog života. Pokazat će se kako postojeću web aplikaciju optimiranu za WebKit preglednike jednostavno prilagoditi web standardima kako bi bila potpuno funkcionalna i na Internet Exploreru 10. Time se ostvaruje i dobra polazišna točka za njeno daljnje pakiranje u Windows 8 aplikaciju i objavu u Windows Storeu ukoliko se pokaže potreba.
Often, there is a difference of opinion between IT specialists who make business apps with databases in client-server architecture and those who skipped the client-server architecture altogether and began working on web applications. The former usually (but not always) tend to write their code in the database, while the latter consider the database a “black box”, which often serves only as a data container, while the business logic resides in the application server. There are a lot of other questions. The author thinks that specific needs require consideration. It is important to learn and think, and avoid being narrow-minded and accept a single “truth”. These questions will be considered through the Oracle ADF framework.
Non-functional testing is an important, but often ignored step in the process of developing applications. Gatling is a tool that enables us to simulate load, performs the associated measurement and presents the results of the performance testing. Why is Gatling detected by the ThoughtWorks radar? Because it is based on Akka, Netty and Scala technologies and so this lecture will show that writing performance scripts don’t have to be boring. With the concept and methodology of performance testing, using Gatling, the author will present personal experiences from previous projects testing the JVM applications.
More Related Content
Similar to Vert.x - asinkroni skalabilni i poliglotni framework nove generacije
U Srcu razvijamo, održavamo i dajemo podršku za veliki broj sustava, gdje se svaki sastoji od niza servisa i aplikacija, broj aktivnih korisnika ide i preko 150.000 (uglavnom iz akademske zajednice), a ti sustavi rade na raznim platformama (Java, .Net, PHP, ...). Potrebe i želje korisnika za doradama, nadogradnjama i proširenjima sustava konstantno rastu kako rastu i sami sustavi. Kako bi i dalje uspješno pratili potrebe korisnika smatramo da nam treba Platform as a service (PaaS) kao temelj za daljnji razvoj i održavanje naših sustava. U prezentaciji je prezentirano u kojim segmentima rada nam PaaS može pomoći.
Predavanje sa JavaCro14 koje na primjeru CROZ-ovog proizvoda LikeMyIdea pokazuje automatizaciju release-a i instalacije. Korišteni alati i jezici: Maven, Groovy, Ant,
Jython, Shell (Batch).
GraphQL & Laravel - Efikasni API servisiPedja Jevtic
Sa najnovijom generacijom pametnih tehnologija, sve više i više uredjaja ima potrebu za podacima neophodnim za njihovu osnovnu funkcionalnost. Pametni satovi, frižideri, garažna vrata su samo neki od njih.
Razvoj i održavanje API backend aplikacije za usluživanje nekoliko generacija uređaja i njihovih specifičnih potreba postalo je veoma teško i skupo.
GraphQL pruža alternativu i promenu u paradigmi izmeštanjem odgovornosti za strukturu podataka u API pozivima ka samom klijentu. Ovo obezbedjuje optimizaciju u prenosu podataka isključujući nepotrebne podatke i u isto vreme, smanjuje kompleksnost API poziva i metoda što ujedno ubrzava i olakšava održavanje istih.
Description and analysis of MEAN stack and underlying technologies (Mongo DB, Express, Angular and Node JS). Review of development tools & techniques. Performance, best practices. Common usage scenarios, pros and cons. How to use it, when to use it, when not to use it.
Zašto je REST stil programske arhitekture tako popularan za realizaciju otvorenih informacijskih sustava? Temeljem iskustava stečenih kroz implementaciju ISVU REST API-ja (https://www.isvu.hr/api/) pokazan je postupak kako se REST API može realizirati te na koje detalje treba posebno paziti.
WinDays 13 - Internet Explorer 10 - san koji je postao javaMatija Šmalcelj
Novi Internet Explorer 10 koji dolazi sa Windows 8 i Windows phone 8 predstavlja uistinu veliki korak naprijed u svakom pogledu. Osim značajnog povećanja performansi i sigurnosti, ono što zaista oduševljava je konačno potpuna podrška za zaslone osjetljive na dodir i implementacija svih naprednijih CSS3 funkcionalnosti. Mogućnosti novog preglednika se naslućuju i u tome što je jedan od načina izrade nativnih aplikacija za Windows 8 i pomoću HTML5, CSS3 i JavaScripta. Prvi, kraći dio predavanja sadržavati će pregled novosti bitnih za programere dok će ostatak predavanja biti posvećen problemu iz stvarnog života. Pokazat će se kako postojeću web aplikaciju optimiranu za WebKit preglednike jednostavno prilagoditi web standardima kako bi bila potpuno funkcionalna i na Internet Exploreru 10. Time se ostvaruje i dobra polazišna točka za njeno daljnje pakiranje u Windows 8 aplikaciju i objavu u Windows Storeu ukoliko se pokaže potreba.
Often, there is a difference of opinion between IT specialists who make business apps with databases in client-server architecture and those who skipped the client-server architecture altogether and began working on web applications. The former usually (but not always) tend to write their code in the database, while the latter consider the database a “black box”, which often serves only as a data container, while the business logic resides in the application server. There are a lot of other questions. The author thinks that specific needs require consideration. It is important to learn and think, and avoid being narrow-minded and accept a single “truth”. These questions will be considered through the Oracle ADF framework.
Non-functional testing is an important, but often ignored step in the process of developing applications. Gatling is a tool that enables us to simulate load, performs the associated measurement and presents the results of the performance testing. Why is Gatling detected by the ThoughtWorks radar? Because it is based on Akka, Netty and Scala technologies and so this lecture will show that writing performance scripts don’t have to be boring. With the concept and methodology of performance testing, using Gatling, the author will present personal experiences from previous projects testing the JVM applications.
Similar to Vert.x - asinkroni skalabilni i poliglotni framework nove generacije (20)
3. Vert.x – što je to ?
•
•
•
•
•
•
•
Zapravo i nije framework, više kao platforma na JVM
Prva verzija u svibnju 2012. g. (Node.js, 2009. g.)
Inicijalno projekt zaposlenika VMwarea
8. 2013 - Eclipse Foundation (Incubating)
JDK 1.7 +
Jedan od najzanimljivijih projekata na GitHubu
Skalabilan, poliglotan, modularan, asinkron,
jednostavan
5. Vert.x – što je to ?
• Koji problem rješava?
• C10K !
• „It's time for web servers to handle ten thousand
clients simultaneously, don't you think? After all, the
web is a big place now.” Dan Kegel (2003.)
• Upravljanje i optimiranje resursima pri velikom broju
simultanih korisnika (konekcija).
• Thread po konekciji? Blokirajuće operacije?
• Vert.x - asnikrona i event driven arhitektura
6. Vert.x – Karakteristike
• Poliglotan (JS, Java, Python, Groovy, Ruby – Scala i
Clojure dolaze)
• Asinkron (zapravo event driven)
• Modularan (koristi module i može biti modul)
• Jednostavan (bez puno konfiguracije)
• Skalabilan (koristi sabirnicu za komunikaciju)
• Jednostavan model višenitnosti (multithreading,
Reactor pattern)
• Embedabilan i koristi sve prednosti JVM-a
7. Vert.x – Osnovne komponente
• Vertica (Verticle)
• Vert.x instanca
• (Distribuirana) sabirnica događaja (Event bus)
• Modul
8. Vert.x – Osnovne komponente - Vertica
•
•
•
•
Osnovna jedinica upravljanja (deploymenta)
Kod koji Vert.x izvršava
Izolirani ClassLoader
Ne mogu globalno dijeliti stanje (static, globalne
varijable,...)
• 2 tipa vertica:
1. Logička vertica - single threading – non blocking code
2. Radna vertica (Worker verticle) – može korisiti multithreading i
kod koji blokira (nije asinkron)
9. Vert.x – Vertica u Javi
import org.vertx.java.core.Handler;
import org.vertx.java.core.http.HttpServerRequest;
import org.vertx.java.platform.Verticle;
public class Server extends Verticle {
public void start() {
vertx.createHttpServer().requestHandler(new Handler<HttpServerRequest>() {
public void handle(HttpServerRequest req) {
String file = req.path().equals("/") ? "index.html" : req.path();
req.response().sendFile("webroot/" + file);
}
}).listen(8080);
}
}
$vertx run Server.java
10. Vert.x – Vertica u Javi 8 + Lambda
import org.vertx.java.core.http.HttpServerRequest;
import org.vertx.java.deploy.Verticle;
public class Server extends Verticle {
@Override
public void start() throws Exception {
vertx.createHttpServer().requestHandler((HttpServerRequest req) -> {
String file = req.path.equals("/") ? "index.html" : req.path;
req.response().sendFile(file);
}).listen(8086);
}
}
$vertx run Server.java
11. Vert.x – Osnovne komponente - Vert.x instanca
• Jedna ili više vertica
• Radi u vlastitoj JVM instanci
• Više instanci na istom hostu (više hostova koji
komuniciraju putem distribuiranog Event busa)
• Garantirano: Vert.x instancu izvršava samo jedan
thread (singlethreading programiranje)
• Održava set threadova za:
– Event (Run) Loop (1 po CPU jezgri)
– thread pool za izvršavanje radnih vertica
12. Vert.x – Osnovne komponente -Vert.x instanca
Event Loops
Quad Core CPU
$vertx run Server.java –instances 4
13. Vert.x – Osnovne komponente – Event Bus
•
•
•
•
•
•
•
Živčani sustav Vert.x-a
Komunikacija između vertica (među procesna)
Zbilja jednostavan API
Pub/Sub, Req/Resp, PtoP načini prosljeđivanja poruka
JSON poruke za strukturirane podatke
Distribuirani: spaja Vert.x JVM instance
Do klijentske strane (npr. Browser + SocksJS ili Web
Socket)
• Nije perzistentan (in memory)
14. Vert.x – Osnovne komponente – Event Bus
import org.vertx.java.core.Handler;
import org.vertx.java.core.eventbus.EventBus;
...
Handler<Message<String>> myHandler = new Handler<Message<String>>() {
public void handle(Message<String> message) {
System.out.println("Primih poruku: " + message.body);
// izvrši neophodne radnje
message.reply(„Odgovor");
}
};
//----------------------------------------------------------------------------------------------------------------eb.registerHandler("test.address", myHandler);
eb.send("test.address", "Ovo je poruka", new Handler<Message<String>>() {
public void handle(Message<String> message) {
System.out.println("Primih odgovor: " + message.body);
}
});
15. Vert.x – Osnovne komponente - Modul
• Mod – upakirana Vert.x aplikacija
• Module koriste druge aplikacije ili drugi Vert.x sustavi
• Idealno za distribuciju putem Mavena (Nexus)
• Vert.x javni registar modula - http://modulereg.vertx.io/
• Busmod – modul koji komunicira preko EventBusa s
verticama putem JSON poruka.
• Moduli su preferiran način korištenja i embedanja Vert.x
aplikacija
16. Vert.x – Osnovne komponente - Modul
• Primjeri:
– mod-mongo-peristor, mod-redis, mod-jdbc-persistor, modpostresql,...
– mod-mailer, mod-session-manager, mod-auth-mgr
– mod-guice, mod-spring-appcontext
– mod-kafka, mod-jersey, mod-socketio
– mod-zip, mod-unzip, mod-ampq
• Jezici koje vert.x podržava su također moduli:
– mod-lang-rhino, mod-lang-groovy, mod-lang-jython, mod-langjruby, mod-lang-scala, mod-lang-coljure, ...
19. Vert.x – Arhitektura
• Dijeljenje podataka između vertica (Shared state):
• Vertice mogu djeliti nepromjenjive podatke (Immutabe)
• Sesija po Vert.x instanci
• Vert.x daje pristup Shared Map i Shared Set
• Samo jednostavni tipovi: brojevi, boolean, String i Buffer
• Bitno za npr. Cache, sinkronizacijsku logiku, otvorene
konekcije i sl.
21. Vert.x – Arhitektura
• Primjer dijeljenog seta
Set<String> set = vertx.sharedData().getSet("app.may-set");
set.add("Mihovil");
set.contains("Mihovil");
vertx.removeSet("app.may-set");
22. Vert.x – Arhitektura
• Concurrency model:
–
–
–
–
–
Multi-reactor pattern
Synchronised, volatile, locking
Single threaded kod po vertici
Hibridni multithreading (logička i worker vertica)
Izolirani ClassLoader i jedan thread/event loop za egzekuciju
• Asinkroni model programiranja:
– Event handleri
– Asinkroni API za filesystem i streamove
– Izmjena poruka putem sabirnice
23. Vert.x – Arhitektura
Vert.x interno koristi ove open source projekte:
• Netty 4.0 -> network IO
• JRuby -> Ruby engine
• Jython -> Python engine
• Mozilla Rhino -> JavaScript engine
• Hazelcast -> upravljanje grupama i klasterom
• Jackson -> za JSON
• ...
25. Vert.x – Usporedba
Vert.x
Node.js
Polyglot
JavaScript
Lakoća skaliranja i klasteriranja
Nije tako lako skalirati
Skromniji broj modula
Velik broj modula
Dobra dokumentacija
Dobra dokumentacija
Bolje perfromanse
Ne tako dobre performanse (u odnosu na
Java vert.x)
Malo primjera uporabe
Puno primjera uporabe
Mali community
Velik community
Lakše uključivanje u Java projekte i
iskorištavanje Java ekosustava
Nije često korišten za enterprise sustave
26. Vert.x – Usporedba
• Programerska perspektiva :
– Dobre stvari:
•
•
•
•
•
JAVA !
Jednostavan i neopširan API
Timovi za razvoj u raznim jezicima
Zero conf. debugiranje i testiranje (podrška za integracijske testove)
Container API (programsko deplojanje i undeplojanje te logiranje)
– Ne tako dobre:
• Dosta anonimnih unutarnjih klasa (Lambdas to the rescue!)
• Nativne extenzije na drugim platformama na koje su ljudi navikli
• Nezgodno debugiranje busmoda (stack trace završava kod izmjene
poruka)
• Nema (out of the box) MVC podršku
• JDK7+ pa nema Androida
27. Vert.x – Najbolje prakse
•
•
•
•
•
•
•
•
•
Don’t block the event loop!
Java za razvoj (najbolje performanse)
Dobar alat za određene vrste poslova, ne sve.
Poštedno korištenje worker vertica.
Koristiti asinkrone java biblioteke (ako je moguće)
JCA adapter za integraciju s J2EE
Koristiti i dijeliti module (javni registar)
Autodeploy kod razvoja, no možda ne i u produkciji
Pratiti mrežni promet na hostu (tuniranje performansi)
28. Vert.x – Nabolje preporuke
• Koristiti za:
– „Real time” aplikacije (gdje biste i Node.js)
– Integraciju sa sustavima baziranim na messaging arhitekturi
(AMPQ, ZeroMQ, ...)
– Dashboardi i vezani API (big data)
– Message brokeri
– Push sustavi (push notifikacije za mobile)
– Veliki, particionirani cache sustavi
– Nadgledanje i upravljanje jobovima (Quartz, Jenkins, Hadoop)
– RPC sustavi, ad-hoc upiti nad velikim datasetovima
– Streaming podataka, audio-video, on the fly transformacije pod.
29. Vert.x – Zaključak
• Open source governance je bitan !
• Projekt je još mlad i u razvitku
• Nedostaje pravih, kompleksnih primjera
primjene u produkciji
• I u Java svijet dolaze nove vrste platforma, za
moderne izazove
• Poliglotnost: izrada kompleksnih modernih
enterprise sustava
30. Kontakt
Mihovil Rister
gsm
+385 91 5865 907
Razvojni inženjer,
mail
mihovil.rister@fiveminutes.eu
Pet Minuta d.o.o.
skype
mihovil.rister
web
http://www.fiveminutes.eu