SlideShare a Scribd company logo
Development with Vert.x:
an event-driven application
framework for the JVM
David Wu
@wuman
blog.wu-man.com
Taiwan Java User Group (2013/06/29)
1Monday, July 1, 13
about.me/wuman
2Monday, July 1, 13
What is Vert.x?
3Monday, July 1, 13
What most people will tell you about Vert.x
• A general-purpose application framework
running on JVM
• Performant: asynchronous APIs, event-driven,
non-blocking, etc.
• Highly scalable but also easy to implement
concurrency
• Polyglot: intermix Java, JS, Ruby, Groovy,
Python, etc.
4Monday, July 1, 13
What I think about Vert.x
• All-in-one framework that allows you to focus
on your application rather than fiddling with
different technologies
• Business friendly Apache License 2.0
• Loose coupling modules that interoperate in a
system
5Monday, July 1, 13
Background on the
C10K Problem
6Monday, July 1, 13
Shift from Threading
to Asynchronous
the story of switching from Apache to Node.js
7Monday, July 1, 13
The inevitable comparison to Node.js
• A single event loop serving a high volume of
connections via an asynchronous
programming model
• Most of the real work are done in a pool of
background threads
8Monday, July 1, 13
Asynchronous Programming Model
vertx.createHttpServer().requestHandler(
new Handler<HttpServerRequest>() {
public void handle(HttpServerRequest request) {
log.info("A request has arrived on the server!");
request.response().end();
}
}
).listen(8080, "localhost");
9Monday, July 1, 13
But there are 3
problems with Node.js
10Monday, July 1, 13
Problems with Node.js
• Well, it’s not Java (and this is a Java User
Group)
• Does not easily scale both vertically and
horizontally
• Single event loop fails when you have CPU-
intensive tasks or 3rd-party blocking APIs
11Monday, July 1, 13
Vert.x to the rescue
• Use all available cores on a single machine
• Horizontally scale out to multiple boxes
• Allow blocking calls to NOT run on an event
loop
12Monday, July 1, 13
Introduction to Vert.x instance and Verticles
Verticle
Verticle
WorkerVerticle
WorkerVerticle
Vert.x instance
13Monday, July 1, 13
Verticles are extremely isolated
• Verticles are isolated with separate class
loaders
• A verticle never gets executed by more than
one thread concurrently
• No race conditions, no deadlocks. You write
your code as single threaded.
14Monday, July 1, 13
What about
communication?
15Monday, July 1, 13
Message Passing via the Event Bus
Verticle
Verticle
Worker
Verticle
Worker
Verticle
Vert.x instance
16Monday, July 1, 13
Very Powerful Event Bus
Verticle
Verticle
WorkerVerticle
Verticle
Verticle
WorkerVerticle
17Monday, July 1, 13
Registering a Message Handler
EventBus eb = vertx.eventBus();
Handler<Message> myHandler = new Handler<Message>() {
public void handle(Message message) {
System.out.println("I received a message " + message.body);
}
};
eb.registerHandler("test.address", myHandler);
18Monday, July 1, 13
Message Types
• Primitives and their boxed types
• String
• org.vertx.java.core.json.JsonObject
• org.vertx.java.core.json.JsonArray
• org.vertx.java.core.buffer.Buffer
19Monday, July 1, 13
Pub/Sub Model
eb.publish("test.address", "hello world");
20Monday, July 1, 13
Point-to-Point Model
eb.send("test.address", "This is a message",
new Handler<Message<String>>() {
public void handle(Message<String> message) {
System.out.println("I received a reply " + message.body);
}
});
EventBus eb = vertx.eventBus();
Handler<Message> myHandler = new Handler<Message>() {
public void handle(Message message) {
System.out.println("I received a message " + message.body);
message.reply("This is a reply");
}
};
eb.registerHandler("test.address", myHandler);
21Monday, July 1, 13
Shared Maps and Sets
ConcurrentMap<String, Integer> map = vertx.sharedData().getMap("demo.mymap");
map.put("some-key", 123);
Set<String> set = vertx.sharedData().getSet("demo.myset");
set.add("some-value");
22Monday, July 1, 13
Module System
23Monday, July 1, 13
Writing Verticles
import org.vertx.java.core.Handler;
import org.vertx.java.core.net.NetSocket;
import org.vertx.java.core.streams.Pump;
import org.vertx.java.platform.Verticle;
public class Server extends Verticle {
public void start() {
vertx.createNetServer().connectHandler(new Handler<NetSocket>() {
public void handle(final NetSocket socket) {
Pump.createPump(socket, socket).start();
}
}).listen(1234);
}
}
vertx run Server.java
24Monday, July 1, 13
Deploying Verticles programmatically
// For example - deploy some other verticle
container.deployVerticle("foo.js", new AsyncResultHandler<String>() {
public void handle(AsyncResult<String> deployResult) {
if (deployResult.succeeded()) {
System.out.println(“Yay!”);
} else {
System.out.println(“Error: “ + deployResult.cause());
}
}
});
25Monday, July 1, 13
Modules
• Package verticles into re-usable modules
• Simply a zip file containing module definition,
code, and resources
• Very similar to the module system in Node.js
• Modules can be “zip” artifacts released in
Maven Central
• Vert.x web site maintains a listing of Vert.x
modules
26Monday, July 1, 13
Example Modules
• JDBC, Redis, MongoDB Persistors
• AMQP
• Mailer
• Persistent work queue
• Authentication Manager
• Session Manager
• Web framework
• Language implementations
27Monday, July 1, 13
Programming
Experience
28Monday, July 1, 13
Core APIs
• TCP/SSL servers
and clients
• HTTP/HTTPS
servers and clients
• WebSockets
servers and clients
• SockJS
• EventBus
• Shared Maps and
Sets
• Buffers
• Flow control
• Timers
• Files
• Configuration
29Monday, July 1, 13
Container API
• Deploying and undeploying verticles
• Deploying and undeploying modules
• Logging
• Retrieve verticle configuration
30Monday, July 1, 13
Easy development
• Gradle template
• Maven archetype and plugin
• IDE debugging and testing
31Monday, July 1, 13
What is it good for?
32Monday, July 1, 13
Applications
• Realtime analytics dashboard
• Big data queries and task coordination
• Polyglot integration
33Monday, July 1, 13
Some Pain Points
34Monday, July 1, 13
Real life caveats
• Content assist in IDEs don’t work for busmod APIs
• You often find yourself tracing errors in the busmods,
which can be difficult because the stack trace stops
at message passing
• People writing in other languages often get frustrated
by not being able to use native extensions that they
are already used to.
• Hell of anonymous inner class callbacks and no good
Java flow control libraries
• Java7 only. Doesn’t work on Android.
35Monday, July 1, 13
Conclusion
36Monday, July 1, 13
37Monday, July 1, 13
“Using a bleeding-edge
framework is exciting at first.
Not so much afterwards.”
David Wu
37Monday, July 1, 13
Make it better.
Contribute.
http://vert-x.github.io/
38Monday, July 1, 13
Thank you
39Monday, July 1, 13
Q & A
40Monday, July 1, 13

More Related Content

What's hot (20)

PPT
JUDCon Brazil 2013 - Vert.x an introduction
Samuel Tauil
 
PDF
An Introduction to the Vert.x framework
zznate
 
PPTX
Event driven microservices with vertx and kubernetes
Andy Moncsek
 
PDF
vert.x - life beyond jetty and apache
Ralph Winzinger
 
PPTX
Vert.x vs akka
Chang-Hwan Han
 
PPTX
Production ready Vert.x
Sascha Möllering
 
PDF
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
jaxLondonConference
 
PDF
Reactor grails realtime web devoxx 2013
Stéphane Maldini
 
PPTX
Vertx in production
Mariam Hakobyan
 
PDF
JavaScript as a Server side language (NodeJS): JSConf 2011, Dhaka
Nurul Ferdous
 
PDF
Node.js, toy or power tool?
Ovidiu Dimulescu
 
PDF
Running JavaScript Efficiently in a Java World
irbull
 
PDF
Introduction to node js - From "hello world" to deploying on azure
Colin Mackay
 
PDF
Modern app programming with RxJava and Eclipse Vert.x
Thomas Segismont
 
PDF
Building Reactive Microservices with Vert.x
Claudio Eduardo de Oliveira
 
PDF
Nuxeo World Session: Scaling Nuxeo Applications
Nuxeo
 
KEY
Introducing Apricot, The Eclipse Content Management Platform
Nuxeo
 
KEY
OSCON 2011 - Node.js Tutorial
Tom Croucher
 
PDF
Vagrant-Binding JUG Dortmund
Hendrik Ebbers
 
JUDCon Brazil 2013 - Vert.x an introduction
Samuel Tauil
 
An Introduction to the Vert.x framework
zznate
 
Event driven microservices with vertx and kubernetes
Andy Moncsek
 
vert.x - life beyond jetty and apache
Ralph Winzinger
 
Vert.x vs akka
Chang-Hwan Han
 
Production ready Vert.x
Sascha Möllering
 
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
jaxLondonConference
 
Reactor grails realtime web devoxx 2013
Stéphane Maldini
 
Vertx in production
Mariam Hakobyan
 
JavaScript as a Server side language (NodeJS): JSConf 2011, Dhaka
Nurul Ferdous
 
Node.js, toy or power tool?
Ovidiu Dimulescu
 
Running JavaScript Efficiently in a Java World
irbull
 
Introduction to node js - From "hello world" to deploying on azure
Colin Mackay
 
Modern app programming with RxJava and Eclipse Vert.x
Thomas Segismont
 
Building Reactive Microservices with Vert.x
Claudio Eduardo de Oliveira
 
Nuxeo World Session: Scaling Nuxeo Applications
Nuxeo
 
Introducing Apricot, The Eclipse Content Management Platform
Nuxeo
 
OSCON 2011 - Node.js Tutorial
Tom Croucher
 
Vagrant-Binding JUG Dortmund
Hendrik Ebbers
 

Viewers also liked (20)

PPTX
Vert.x v3 - high performance polyglot application toolkit
Sages
 
PDF
Reactive Distributed Applications with Vert.x
Red Hat Developers
 
PPTX
ADF in Action - getting (re)acquainted with Oracle’s premier application deve...
Lucas Jellema
 
ODP
Build your reactive web application with Vert.x
Codemotion
 
PPTX
Data Caching Strategies for Oracle Mobile Application Framework
andrejusb
 
PDF
Mech project list
Krishna Malhotra
 
PDF
Gws 20131018 vertx_handson(updated)
Nobuhiro Sue
 
PPTX
Real World Enterprise Reactive Programming using Vert.x
Mariam Hakobyan
 
PDF
Vertx
Alvaro Videla
 
PDF
Case study - Nuskin: Statefull Applications in a Stateless World
Day Software
 
PDF
Vert.x 3
Xavier MARIN
 
PDF
Futures and Rx Observables: powerful abstractions for consuming web services ...
Chris Richardson
 
PDF
Apache mahout - introduction
Jackson dos Santos Olveira
 
PDF
Managing computational resources with Apache Mesos
Jackson dos Santos Olveira
 
PDF
An introduction to predictionIO
Jackson dos Santos Olveira
 
PDF
PC = Personal Cloud (or how to use your development machine with Vagrant and ...
Codemotion
 
PDF
Introduction to CFEngine
Jackson dos Santos Olveira
 
Vert.x v3 - high performance polyglot application toolkit
Sages
 
Reactive Distributed Applications with Vert.x
Red Hat Developers
 
ADF in Action - getting (re)acquainted with Oracle’s premier application deve...
Lucas Jellema
 
Build your reactive web application with Vert.x
Codemotion
 
Data Caching Strategies for Oracle Mobile Application Framework
andrejusb
 
Mech project list
Krishna Malhotra
 
Gws 20131018 vertx_handson(updated)
Nobuhiro Sue
 
Real World Enterprise Reactive Programming using Vert.x
Mariam Hakobyan
 
Case study - Nuskin: Statefull Applications in a Stateless World
Day Software
 
Vert.x 3
Xavier MARIN
 
Futures and Rx Observables: powerful abstractions for consuming web services ...
Chris Richardson
 
Apache mahout - introduction
Jackson dos Santos Olveira
 
Managing computational resources with Apache Mesos
Jackson dos Santos Olveira
 
An introduction to predictionIO
Jackson dos Santos Olveira
 
PC = Personal Cloud (or how to use your development machine with Vagrant and ...
Codemotion
 
Introduction to CFEngine
Jackson dos Santos Olveira
 
Ad

Similar to Development with Vert.x: an event-driven application framework for the JVM (20)

PDF
Vert.x - 2014 JDay Lviv (English)
Bartek Zdanowski
 
PPTX
Vert.x Event Driven Non Blocking Reactive Toolkit
Brian S. Paskin
 
PDF
BASICS OF VERT.X - A toolkit for building asynchronous and reactive app
HanaStevanovic
 
PDF
Apps software development with Vert.X
Jose Juan R. Zuñiga
 
PDF
Vertx Basics
Souvik Maji
 
PPTX
Vertx
Vijay Shukla
 
PDF
Vert.x - Tehran JUG meeting Aug-2014 - Saeed Zarinfam
Saeed Zarinfam
 
PDF
Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app...
Anna Shymchenko
 
PPTX
Vert.x for Microservices Architecture
Idan Fridman
 
PDF
Vert.x - JDD 2013 (English)
Bartek Zdanowski
 
PDF
Vertx In Action Asynchronous And Reactive Java Julien Ponge
ratanaarizbe
 
PPTX
Building microservices with vert.x 3.0
Agraj Mangal
 
PPTX
Vertx – reactive toolkit
Avi Saidian
 
PDF
TDC2017 | São Paulo - Trilha Java EE How we figured out we had a SRE team at ...
tdc-globalcode
 
PPTX
Event driven systems
Shatabda Majumdar
 
PDF
Utrecht JUG - Building microservices with Vert.x
Bert Jan Schrijver
 
PPTX
Getting groovier-with-vertx
TO THE NEW | Technology
 
PDF
Vert.x - Dessì
Codemotion
 
PDF
Codemotion Amsterdam 2016 - Building microservices with Vert.x
Bert Jan Schrijver
 
PDF
Building microservices with Vert.x - Bert Jan Schrijver - Codemotion Amsterda...
Codemotion
 
Vert.x - 2014 JDay Lviv (English)
Bartek Zdanowski
 
Vert.x Event Driven Non Blocking Reactive Toolkit
Brian S. Paskin
 
BASICS OF VERT.X - A toolkit for building asynchronous and reactive app
HanaStevanovic
 
Apps software development with Vert.X
Jose Juan R. Zuñiga
 
Vertx Basics
Souvik Maji
 
Vert.x - Tehran JUG meeting Aug-2014 - Saeed Zarinfam
Saeed Zarinfam
 
Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app...
Anna Shymchenko
 
Vert.x for Microservices Architecture
Idan Fridman
 
Vert.x - JDD 2013 (English)
Bartek Zdanowski
 
Vertx In Action Asynchronous And Reactive Java Julien Ponge
ratanaarizbe
 
Building microservices with vert.x 3.0
Agraj Mangal
 
Vertx – reactive toolkit
Avi Saidian
 
TDC2017 | São Paulo - Trilha Java EE How we figured out we had a SRE team at ...
tdc-globalcode
 
Event driven systems
Shatabda Majumdar
 
Utrecht JUG - Building microservices with Vert.x
Bert Jan Schrijver
 
Getting groovier-with-vertx
TO THE NEW | Technology
 
Vert.x - Dessì
Codemotion
 
Codemotion Amsterdam 2016 - Building microservices with Vert.x
Bert Jan Schrijver
 
Building microservices with Vert.x - Bert Jan Schrijver - Codemotion Amsterda...
Codemotion
 
Ad

Recently uploaded (20)

PPTX
UserCon Belgium: Honey, VMware increased my bill
stijn40
 
PPTX
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
 
PPTX
Enabling the Digital Artisan – keynote at ICOCI 2025
Alan Dix
 
PDF
Database Benchmarking for Performance Masterclass: Session 1 - Benchmarking F...
ScyllaDB
 
PPTX
01_Approach Cyber- DORA Incident Management.pptx
FinTech Belgium
 
PDF
Automating the Geo-Referencing of Historic Aerial Photography in Flanders
Safe Software
 
PDF
“MPU+: A Transformative Solution for Next-Gen AI at the Edge,” a Presentation...
Edge AI and Vision Alliance
 
PDF
2025_06_18 - OpenMetadata Community Meeting.pdf
OpenMetadata
 
PDF
FME as an Orchestration Tool with Principles From Data Gravity
Safe Software
 
PDF
EIS-Webinar-Engineering-Retail-Infrastructure-06-16-2025.pdf
Earley Information Science
 
PDF
The Growing Value and Application of FME & GenAI
Safe Software
 
PDF
Java 25 and Beyond - A Roadmap of Innovations
Ana-Maria Mihalceanu
 
PDF
Open Source Milvus Vector Database v 2.6
Zilliz
 
PDF
Optimizing the trajectory of a wheel loader working in short loading cycles
Reno Filla
 
PDF
Cracking the Code - Unveiling Synergies Between Open Source Security and AI.pdf
Priyanka Aash
 
PDF
5 Things to Consider When Deploying AI in Your Enterprise
Safe Software
 
PPTX
reInforce 2025 Lightning Talk - Scott Francis.pptx
ScottFrancis51
 
PDF
My Journey from CAD to BIM: A True Underdog Story
Safe Software
 
PPTX
MARTSIA: A Tool for Confidential Data Exchange via Public Blockchain - Poster...
Michele Kryston
 
PDF
Kubernetes - Architecture & Components.pdf
geethak285
 
UserCon Belgium: Honey, VMware increased my bill
stijn40
 
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
 
Enabling the Digital Artisan – keynote at ICOCI 2025
Alan Dix
 
Database Benchmarking for Performance Masterclass: Session 1 - Benchmarking F...
ScyllaDB
 
01_Approach Cyber- DORA Incident Management.pptx
FinTech Belgium
 
Automating the Geo-Referencing of Historic Aerial Photography in Flanders
Safe Software
 
“MPU+: A Transformative Solution for Next-Gen AI at the Edge,” a Presentation...
Edge AI and Vision Alliance
 
2025_06_18 - OpenMetadata Community Meeting.pdf
OpenMetadata
 
FME as an Orchestration Tool with Principles From Data Gravity
Safe Software
 
EIS-Webinar-Engineering-Retail-Infrastructure-06-16-2025.pdf
Earley Information Science
 
The Growing Value and Application of FME & GenAI
Safe Software
 
Java 25 and Beyond - A Roadmap of Innovations
Ana-Maria Mihalceanu
 
Open Source Milvus Vector Database v 2.6
Zilliz
 
Optimizing the trajectory of a wheel loader working in short loading cycles
Reno Filla
 
Cracking the Code - Unveiling Synergies Between Open Source Security and AI.pdf
Priyanka Aash
 
5 Things to Consider When Deploying AI in Your Enterprise
Safe Software
 
reInforce 2025 Lightning Talk - Scott Francis.pptx
ScottFrancis51
 
My Journey from CAD to BIM: A True Underdog Story
Safe Software
 
MARTSIA: A Tool for Confidential Data Exchange via Public Blockchain - Poster...
Michele Kryston
 
Kubernetes - Architecture & Components.pdf
geethak285
 

Development with Vert.x: an event-driven application framework for the JVM

  • 1. Development with Vert.x: an event-driven application framework for the JVM David Wu @wuman blog.wu-man.com Taiwan Java User Group (2013/06/29) 1Monday, July 1, 13
  • 4. What most people will tell you about Vert.x • A general-purpose application framework running on JVM • Performant: asynchronous APIs, event-driven, non-blocking, etc. • Highly scalable but also easy to implement concurrency • Polyglot: intermix Java, JS, Ruby, Groovy, Python, etc. 4Monday, July 1, 13
  • 5. What I think about Vert.x • All-in-one framework that allows you to focus on your application rather than fiddling with different technologies • Business friendly Apache License 2.0 • Loose coupling modules that interoperate in a system 5Monday, July 1, 13
  • 6. Background on the C10K Problem 6Monday, July 1, 13
  • 7. Shift from Threading to Asynchronous the story of switching from Apache to Node.js 7Monday, July 1, 13
  • 8. The inevitable comparison to Node.js • A single event loop serving a high volume of connections via an asynchronous programming model • Most of the real work are done in a pool of background threads 8Monday, July 1, 13
  • 9. Asynchronous Programming Model vertx.createHttpServer().requestHandler( new Handler<HttpServerRequest>() { public void handle(HttpServerRequest request) { log.info("A request has arrived on the server!"); request.response().end(); } } ).listen(8080, "localhost"); 9Monday, July 1, 13
  • 10. But there are 3 problems with Node.js 10Monday, July 1, 13
  • 11. Problems with Node.js • Well, it’s not Java (and this is a Java User Group) • Does not easily scale both vertically and horizontally • Single event loop fails when you have CPU- intensive tasks or 3rd-party blocking APIs 11Monday, July 1, 13
  • 12. Vert.x to the rescue • Use all available cores on a single machine • Horizontally scale out to multiple boxes • Allow blocking calls to NOT run on an event loop 12Monday, July 1, 13
  • 13. Introduction to Vert.x instance and Verticles Verticle Verticle WorkerVerticle WorkerVerticle Vert.x instance 13Monday, July 1, 13
  • 14. Verticles are extremely isolated • Verticles are isolated with separate class loaders • A verticle never gets executed by more than one thread concurrently • No race conditions, no deadlocks. You write your code as single threaded. 14Monday, July 1, 13
  • 16. Message Passing via the Event Bus Verticle Verticle Worker Verticle Worker Verticle Vert.x instance 16Monday, July 1, 13
  • 17. Very Powerful Event Bus Verticle Verticle WorkerVerticle Verticle Verticle WorkerVerticle 17Monday, July 1, 13
  • 18. Registering a Message Handler EventBus eb = vertx.eventBus(); Handler<Message> myHandler = new Handler<Message>() { public void handle(Message message) { System.out.println("I received a message " + message.body); } }; eb.registerHandler("test.address", myHandler); 18Monday, July 1, 13
  • 19. Message Types • Primitives and their boxed types • String • org.vertx.java.core.json.JsonObject • org.vertx.java.core.json.JsonArray • org.vertx.java.core.buffer.Buffer 19Monday, July 1, 13
  • 20. Pub/Sub Model eb.publish("test.address", "hello world"); 20Monday, July 1, 13
  • 21. Point-to-Point Model eb.send("test.address", "This is a message", new Handler<Message<String>>() { public void handle(Message<String> message) { System.out.println("I received a reply " + message.body); } }); EventBus eb = vertx.eventBus(); Handler<Message> myHandler = new Handler<Message>() { public void handle(Message message) { System.out.println("I received a message " + message.body); message.reply("This is a reply"); } }; eb.registerHandler("test.address", myHandler); 21Monday, July 1, 13
  • 22. Shared Maps and Sets ConcurrentMap<String, Integer> map = vertx.sharedData().getMap("demo.mymap"); map.put("some-key", 123); Set<String> set = vertx.sharedData().getSet("demo.myset"); set.add("some-value"); 22Monday, July 1, 13
  • 24. Writing Verticles import org.vertx.java.core.Handler; import org.vertx.java.core.net.NetSocket; import org.vertx.java.core.streams.Pump; import org.vertx.java.platform.Verticle; public class Server extends Verticle { public void start() { vertx.createNetServer().connectHandler(new Handler<NetSocket>() { public void handle(final NetSocket socket) { Pump.createPump(socket, socket).start(); } }).listen(1234); } } vertx run Server.java 24Monday, July 1, 13
  • 25. Deploying Verticles programmatically // For example - deploy some other verticle container.deployVerticle("foo.js", new AsyncResultHandler<String>() { public void handle(AsyncResult<String> deployResult) { if (deployResult.succeeded()) { System.out.println(“Yay!”); } else { System.out.println(“Error: “ + deployResult.cause()); } } }); 25Monday, July 1, 13
  • 26. Modules • Package verticles into re-usable modules • Simply a zip file containing module definition, code, and resources • Very similar to the module system in Node.js • Modules can be “zip” artifacts released in Maven Central • Vert.x web site maintains a listing of Vert.x modules 26Monday, July 1, 13
  • 27. Example Modules • JDBC, Redis, MongoDB Persistors • AMQP • Mailer • Persistent work queue • Authentication Manager • Session Manager • Web framework • Language implementations 27Monday, July 1, 13
  • 29. Core APIs • TCP/SSL servers and clients • HTTP/HTTPS servers and clients • WebSockets servers and clients • SockJS • EventBus • Shared Maps and Sets • Buffers • Flow control • Timers • Files • Configuration 29Monday, July 1, 13
  • 30. Container API • Deploying and undeploying verticles • Deploying and undeploying modules • Logging • Retrieve verticle configuration 30Monday, July 1, 13
  • 31. Easy development • Gradle template • Maven archetype and plugin • IDE debugging and testing 31Monday, July 1, 13
  • 32. What is it good for? 32Monday, July 1, 13
  • 33. Applications • Realtime analytics dashboard • Big data queries and task coordination • Polyglot integration 33Monday, July 1, 13
  • 35. Real life caveats • Content assist in IDEs don’t work for busmod APIs • You often find yourself tracing errors in the busmods, which can be difficult because the stack trace stops at message passing • People writing in other languages often get frustrated by not being able to use native extensions that they are already used to. • Hell of anonymous inner class callbacks and no good Java flow control libraries • Java7 only. Doesn’t work on Android. 35Monday, July 1, 13
  • 38. “Using a bleeding-edge framework is exciting at first. Not so much afterwards.” David Wu 37Monday, July 1, 13
  • 41. Q & A 40Monday, July 1, 13