SlideShare a Scribd company logo
OSCON
An Introduction to the
Vert.x framework
Wednesday, July 24, 13
Hi Folks! I’m Nate
@zznate
http://github.com/zznate
Wednesday, July 24, 13
So what is Vert.x?
Wednesday, July 24, 13
“...lightweight high-
performance
application platform for
the JVM...”
Wednesday, July 24, 13
“...for the JVM”
Wednesday, July 24, 13
The JVM
- mature concurrency model
- very stable
- heterogeneous
Wednesday, July 24, 13
But most importantly...
Polyglot support!
Wednesday, July 24, 13
You can do a lot in 40
minutes...
Wednesday, July 24, 13
http://vertx.io
(scroll down)
To follow along, see: 
https://github.com/vert-x/vertx-examples 
Wednesday, July 24, 13
“Web apps”
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
http://web.tradekorea.com/upload_file/prod/emp/200806/main/result_2008_5_5_9_46_15_0_1.jpg
http://www.tradekorea.com/product-detail/P00016493/
Used__Engine_Engines_auto_cars_spare_parts_car_part_motor_junkyard_korea_junkyards_Aircompressor_.html
Wednesday, July 24, 13
http://cache.boston.com/universal/site_graphics/blogs/bigpicture/shuttle_09_01/sts125_2.jpg
http://www.boston.com/bigpicture/2008/09/preparing_to_rescue_hubble.html 
Wednesday, July 24, 13
"We need to make
configuration as easy as
possible so expensive
tools are not needed." 
Wednesday, July 24, 13
Said no enterpirse
software company ever.
Wednesday, July 24, 13
JDBC Module Config:
{
address : "com.bloidonia.jdbcpersistor"
driver : "org.hsqldb.jdbcDriver",
url : "jdbc:hsqldb:mem:test",
username : "someuser",
password : "somepass",
}
https://github.com/timyates/mod-jdbc-persistor
Wednesday, July 24, 13
“New
[Java | jvm-language]
Framework!!”
Wednesday, July 24, 13
http://geek-news.mtv.com//wp-content/uploads/geek/2012/11/picard-facepalm2.jpg
http://geek-news.mtv.com/2012/11/07/star-trek-wedding-proposal/
Wednesday, July 24, 13
But Vert.x was different.
Wednesday, July 24, 13
...for the JVM
Wednesday, July 24, 13
Mature concurrency
model
- vert.x is based on the
Reactor pattern
http://en.wikipedia.org/wiki/Reactor_pattern
Wednesday, July 24, 13
Platform Stability
- HTTP, HTTPS, TCP, SSL
- clients and servers
- All netty 4.0 based
http://netty.io/
Wednesday, July 24, 13
Homogenous
- file system API
- data-driven event bus
Wednesday, July 24, 13
Polyglot
- Container modules
- currently supports:
JavaScript, Ruby, Python,
Groovy, Scala,
Wednesday, July 24, 13
Scalability
Modularity
Developer-focused
Wednesday, July 24, 13
Scalability
Wednesday, July 24, 13
Event Bus
- simple, distributed peer-to-
peer
- pub/sub or point-to-point
- local or distributed**
- ‘data only’ with limited
number of types
Wednesday, July 24, 13
Event Bus
... but it’s a good idea to use
JSON!
(completely language
agnostic - we are building
services and decoupling!)
Wednesday, July 24, 13
“local or distributed”
BONUS:
EventBus can extend directly
to the browser
http://vertx.io/core_manual_java.html#sockjs-eventbus-bridge
Wednesday, July 24, 13
Modularity
Wednesday, July 24, 13
{
address : "com.bloidonia.jdbcpersistor"
driver : "org.hsqldb.jdbcDriver",
url : "jdbc:hsqldb:mem:test",
username : "someuser",
password : "somepass",
}
Wednesday, July 24, 13
Module Benefits
- encapsulation
- distributability
- dynamic
- structured
Wednesday, July 24, 13
Encapsulation
- classpath and dependency
- classloader isolation
(but multiple instances of the
module will share
classloaders)
Wednesday, July 24, 13
Distributability
pushed to/loaded from:
- file system
(contained or shared)
- maven central
- bintray
http://vertx.io/mods_manual.html#how-vertx-locates-modules 
Wednesday, July 24, 13
Dynamic
- automatically downloaded
and installed
- loaded/unloaded at runtime
Wednesday, July 24, 13
Structured
- minimalistic descriptor
syntax
- sub-modules
(can be thought of as "this module
'deploys' these modules" directive)
Wednesday, July 24, 13
Running a module and providing it’s
configuration
Wednesday, July 24, 13
Modules and Concurency
- Worker (blocking)
- Event loop (non-blocking)
Wednesday, July 24, 13
Worker Modules
- single or multi-threaded
- useful for legacy APIs
(ex. JDBC)
Wednesday, July 24, 13
Event Loop Modules
- control number of instances
- instance per core is ideal
Wednesday, July 24, 13
Modules (best for last...)
Wednesday, July 24, 13
Dog food-ing FTW:
Language runtimes are all
module based
Wednesday, July 24, 13
Developer friendly
Wednesday, July 24, 13
Polyglot (cont’d)
Wednesday, July 24, 13
JavaScript
- Rhino
- DynJS: invokeDynamic
based implementation
http://dynjs.org/
https://github.com/vert-x/mod-lang-dynjs
Wednesday, July 24, 13
Simple Programming Model
- just don’t block the event loop!
- reactor pattern
- worker delegates
http://en.wikipedia.org/wiki/Reactor_pattern
http://vertx.io/core_manual_java.html#writing-verticles 
Wednesday, July 24, 13
Provides most common
services
- HTTP/HTTPS
- TCP/SSL
- SockJS
- File system access
(includes sendfile() wrappers)
Wednesday, July 24, 13
Build It: Maven
- archetype integration
- plug-in for launching/running
http://vertx.io/maven_dev.html 
Wednesday, July 24, 13
Build It: Gradle
- template project to clone
http://vertx.io/gradle_dev.html 
Wednesday, July 24, 13
Test It!
- JUnit integration utilities
- Container and IDE integration
(IntelliJ and Eclipse)
Wednesday, July 24, 13
Summary
- General purpose application
platform
- Polyglot development
- Asynchronous APIs
Wednesday, July 24, 13
Vert.x:
Simple. Not Simplistic.
Wednesday, July 24, 13
Questions?
Wednesday, July 24, 13

More Related Content

PDF
Development with Vert.x: an event-driven application framework for the JVM
PDF
Vert.x introduction
PDF
Vert.x
PDF
vert.x - life beyond jetty and apache
PPTX
Vert.x devoxx london 2013
PDF
Nuxeo World Session: Scaling Nuxeo Applications
PPTX
Production ready Vert.x
PPTX
Vertx in production
Development with Vert.x: an event-driven application framework for the JVM
Vert.x introduction
Vert.x
vert.x - life beyond jetty and apache
Vert.x devoxx london 2013
Nuxeo World Session: Scaling Nuxeo Applications
Production ready Vert.x
Vertx in production

What's hot (20)

PDF
JavaScript as a Server side language (NodeJS): JSConf 2011, Dhaka
PDF
XWiki Aquarium Paris
KEY
Yahoo! scale Node.js
PDF
MySQL Aquarium Paris
PDF
Node.js primer
PPT
Nodejs on 02/22/2012
PPTX
Multi-HV OpenStack - It's 2015 already, are we there yet?
PDF
Loadays 2013 OpenNebula Fundamentals
PDF
Building Reactive Microservices with Vert.x
PDF
Reactor grails realtime web devoxx 2013
PDF
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
PPTX
Bringing ESX Deployments into native OpenStack OVSvApp
PDF
OpenNebulaConf 2016 - Evolution of OpenNebula at Netways by Sebastian Saemann...
PPTX
Vert.x based microservices with vxms
PDF
Threads Needles Stacks Heaps - Java edition
PPTX
Introduction to OSGi - Part-1
PDF
OpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan Horacek
PPT
Introduction to node.js aka NodeJS
PDF
Memcached as a Service for CloudFoundry
JavaScript as a Server side language (NodeJS): JSConf 2011, Dhaka
XWiki Aquarium Paris
Yahoo! scale Node.js
MySQL Aquarium Paris
Node.js primer
Nodejs on 02/22/2012
Multi-HV OpenStack - It's 2015 already, are we there yet?
Loadays 2013 OpenNebula Fundamentals
Building Reactive Microservices with Vert.x
Reactor grails realtime web devoxx 2013
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
Bringing ESX Deployments into native OpenStack OVSvApp
OpenNebulaConf 2016 - Evolution of OpenNebula at Netways by Sebastian Saemann...
Vert.x based microservices with vxms
Threads Needles Stacks Heaps - Java edition
Introduction to OSGi - Part-1
OpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan Horacek
Introduction to node.js aka NodeJS
Memcached as a Service for CloudFoundry
Ad

Similar to An Introduction to the Vert.x framework (20)

PDF
Vert.x - 2014 JDay Lviv (English)
PDF
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
PDF
Utrecht JUG - Building microservices with Vert.x
PDF
Codemotion Amsterdam 2016 - Building microservices with Vert.x
PDF
Building microservices with Vert.x - Bert Jan Schrijver - Codemotion Amsterda...
PDF
JBCNConf: jBPM & Vert.x Reactive and Polyglot BPM
PDF
Vertx In Action Asynchronous And Reactive Java Julien Ponge
ODP
Vert.x keynote for EclipseCon 2013
PDF
Vert.x - Tehran JUG meeting Aug-2014 - Saeed Zarinfam
PDF
Apps software development with Vert.X
PDF
Vertx Basics
PDF
Crushing Latency with Vert.x
PPTX
Vert.x - Reactive & Distributed [Devoxx version]
PDF
The Bleeding Edge
PDF
The Bleeding Edge
PPTX
Vert.x v3 - high performance polyglot application toolkit
ODP
Groovy & Grails eXchange 2012 vert.x presentation
PDF
Is OSGi Modularity Always Worth It? - Glyn Normington
PPTX
Multi-threading in the modern era: Vertx Akka and Quasar
PPTX
Building microservices with vert.x 3.0
Vert.x - 2014 JDay Lviv (English)
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
Utrecht JUG - Building microservices with Vert.x
Codemotion Amsterdam 2016 - Building microservices with Vert.x
Building microservices with Vert.x - Bert Jan Schrijver - Codemotion Amsterda...
JBCNConf: jBPM & Vert.x Reactive and Polyglot BPM
Vertx In Action Asynchronous And Reactive Java Julien Ponge
Vert.x keynote for EclipseCon 2013
Vert.x - Tehran JUG meeting Aug-2014 - Saeed Zarinfam
Apps software development with Vert.X
Vertx Basics
Crushing Latency with Vert.x
Vert.x - Reactive & Distributed [Devoxx version]
The Bleeding Edge
The Bleeding Edge
Vert.x v3 - high performance polyglot application toolkit
Groovy & Grails eXchange 2012 vert.x presentation
Is OSGi Modularity Always Worth It? - Glyn Normington
Multi-threading in the modern era: Vertx Akka and Quasar
Building microservices with vert.x 3.0
Ad

More from zznate (18)

PDF
Advanced Apache Cassandra Operations with JMX
PDF
Hardening cassandra q2_2016
PDF
Seattle C* Meetup: Hardening cassandra for compliance or paranoia
PDF
Software Development with Apache Cassandra
PDF
Hardening cassandra for compliance or paranoia
PDF
Successful Software Development with Apache Cassandra
PDF
Stampede con 2014 cassandra in the real world
PDF
Intravert atx meetup_condensed
PDF
Apachecon cassandra transport
KEY
Oscon 2012 tdd_cassandra
PPTX
Strata west 2012_java_cassandra
ODP
Nyc summit intro_to_cassandra
ODP
Meetup cassandra sfo_jdbc
ODP
Meetup cassandra for_java_cql
ODP
Introduciton to Apache Cassandra for Java Developers (JavaOne)
ODP
Introduction to apache_cassandra_for_developers-lhg
PPT
Introduction to apache_cassandra_for_develope
PPT
Hector v2: The Second Version of the Popular High-Level Java Client for Apach...
Advanced Apache Cassandra Operations with JMX
Hardening cassandra q2_2016
Seattle C* Meetup: Hardening cassandra for compliance or paranoia
Software Development with Apache Cassandra
Hardening cassandra for compliance or paranoia
Successful Software Development with Apache Cassandra
Stampede con 2014 cassandra in the real world
Intravert atx meetup_condensed
Apachecon cassandra transport
Oscon 2012 tdd_cassandra
Strata west 2012_java_cassandra
Nyc summit intro_to_cassandra
Meetup cassandra sfo_jdbc
Meetup cassandra for_java_cql
Introduciton to Apache Cassandra for Java Developers (JavaOne)
Introduction to apache_cassandra_for_developers-lhg
Introduction to apache_cassandra_for_develope
Hector v2: The Second Version of the Popular High-Level Java Client for Apach...

Recently uploaded (20)

PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Approach and Philosophy of On baking technology
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Cloud computing and distributed systems.
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Network Security Unit 5.pdf for BCA BBA.
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Big Data Technologies - Introduction.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
cuic standard and advanced reporting.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Chapter 3 Spatial Domain Image Processing.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Approach and Philosophy of On baking technology
Digital-Transformation-Roadmap-for-Companies.pptx
Spectral efficient network and resource selection model in 5G networks
NewMind AI Monthly Chronicles - July 2025
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Empathic Computing: Creating Shared Understanding
Cloud computing and distributed systems.
Dropbox Q2 2025 Financial Results & Investor Presentation
Review of recent advances in non-invasive hemoglobin estimation
Network Security Unit 5.pdf for BCA BBA.
“AI and Expert System Decision Support & Business Intelligence Systems”
Big Data Technologies - Introduction.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
cuic standard and advanced reporting.pdf
Machine learning based COVID-19 study performance prediction
Diabetes mellitus diagnosis method based random forest with bat algorithm
Chapter 3 Spatial Domain Image Processing.pdf

An Introduction to the Vert.x framework