Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

vert.x

Slide 3

Slide 3 text

art Williams) r Bio lting Architect at SpringSource / Pivotal

Slide 4

Slide 4 text

project Lead ox ters er

Slide 5

Slide 5 text

s vert.x? al purpose application platform cially similar to Node.js – but not a clone! ronous APIs t – mix and match Java, JavaScript/CoffeeScript, Ruby, Gro (others to follow). but not Simplistic the new breed of application platforms

Slide 6

Slide 6 text

eatures eactor Container clients and servers TPS clients and servers – including WebSockets m nchronous

Slide 7

Slide 7 text

imple HTTP server files by matching request path ample for each language

Slide 8

Slide 8 text

cript – Mozilla Rhino tx.js’) reateHttpServer().requestHandler(function(req) { e = req.path === '/' ? 'index.html' : req.path; sponse.sendFile('webroot/' + file); 8080)

Slide 9

Slide 9 text

n – www.jython.org ertx vertx.create_http_server() .request_handler est_handler(req): "index.html" if req.uri == "/" else req.uri sponse.send_file("webroot/%s"%file) ten(8080)

Slide 10

Slide 10 text

– jruby.org vertx" ttpServer.new.request_handler do |req| req.uri == "/" ? "index.html" : req.uri sponse.send_file "webroot/#{file}” n(8080)

Slide 11

Slide 11 text

y – groovy-lang.org reateHttpServer().requestHandler { req -> e = req.uri == "/" ? "index.html" : req.uri sponse.sendFile "webroot/$file” 080)

Slide 12

Slide 12 text

tx.java.core.Handler; tx.java.core.http.HttpServerRequest; tx.java.deploy.Verticle; ver extends Verticle { tart() { eateHttpServer().requestHandler(new Handler() { void handle(HttpServerRequest req) { ng file = req.path.equals("/") ? "index.html" : req.path; response.sendFile("webroot/" + file); 080);

Slide 13

Slide 13 text

– soon! reateHttpServer tHandler { req: HttpServerRequest => : String = if (req.path == “/”) “/index.html” else req.u ponse.sendFile("webroot/" + file) 8080)

Slide 14

Slide 14 text

anguages? nvokeDynamic ative to Rhino for JavaScript js Compatibility for vert.x ? guage support do you want see?

Slide 15

Slide 15 text

d Pools ocking Event Loops Loop tors ng er Pool

Slide 16

Slide 16 text

ding Model implements the Multi-Reactor Pattern nt loop is an OS thread s events for many handlers has multiple event loops. Typically one per core. block the event loop!

Slide 17

Slide 17 text

Threading Model rce everything to run on an event loop verticles can block nicate with other verticles by message passing. us to leverage the huge ecosystem of blocking Java libs

Slide 18

Slide 18 text

onents & Client bSocket JS Bus to-point, publish-subscribe parent clustering

Slide 19

Slide 19 text

Bus ous system of Vert.x communicate using the event bus. mple API. point. Publish/Subscribe. Request/Response. ple strings, numbers or other primitive types. essages are preferred for structured data. ent clustering

Slide 20

Slide 20 text

Bus – Example dler = function(message) { e.log('Received message ' + message.msg) ventBus.registerHandler('example.address', handler) etPeriodic(1000, function() { eventBus.send('example.address', { msg: 'foo’ })

Slide 21

Slide 21 text

Bus – Extended to Browser us extends to client side JavaScript too e same API on the client ul distributed event space spanning both client and se r modern “real-time” web applications

Slide 22

Slide 22 text

es cation Manager pload rsistor ersistor Manager ■  Web Server ■  Work Queue ■  AMQP ■  More…

Slide 23

Slide 23 text

web-server js’) = { ot": , port>, l>, re_password": , re_path": , oyModule('vertx.web-server-v1.0', config, 1, function() { d

Slide 24

Slide 24 text

osition ode using code are unit of composed code modules using a verticle de multiple verticles inside a module er: verticles communicate using the Event Bus.

Slide 25

Slide 25 text

ecture on of concerns if required I/O verticles Event

Slide 26

Slide 26 text

ple

Slide 27

Slide 27 text

st Data me Analytics Dashboards & APIs ocket t Integration nguage independent format like JSON, XML for data nge messages using event bus

Slide 28

Slide 28 text

ata – RabbitMQ message broker queuing, routing messages and WAN clustering

Slide 29

Slide 29 text

st Data – Redis ructure Server” e store messaging aching verticle data, broadcasting to verticles

Slide 30

Slide 30 text

st Data – GemFire e Grid / Distributed Cache ble Key-Value store arge partitioned caches, high performance compute, a to vert.x using CacheListeners, subscriptions, Asyn

Slide 31

Slide 31 text

ata – Hadoop course! ries via JDBC worker verticle pattern via event bus d-hoc queries on large datasets

Slide 32

Slide 32 text

ata – MQTT T is a machine-to-machine (M2M) / "Internet of Thing ctivity protocol. mely lightweight publish/subscribe messaging transpor eful for connections with remote locations where a int is required and/or network bandwidth is at a pre e Paho oon!

Slide 33

Slide 33 text

ata – Intravert (@zznate - apigee) ors, filters and procedures allow you perform arbitrary pro mations on the server side before the results are returned procedures and join like logic in a single RPC request elim rips e transport and JSON API that runs over HTTP allows clie rom JSON, JSON compressed by smile, & even big fat sex EST interface (ever thought about what would a Cassandr PI look like?) with simple familiar objects like String or Integer instead of

Slide 34

Slide 34 text

Features ClassLoader 4.0 ages as modules e Module repositories, including Maven ement

Slide 35

Slide 35 text

Developer experience e template project archetype and plugins setup IDE debugging setup IDE testing Tools project

Slide 36

Slide 36 text

gement ment Agent hes metrics on Event Bus in JSON format ment GUI mo

Slide 37

Slide 37 text

Deployment vides a JSON RPC API: er.js RpcServer.groovy ration.groovy – worker ring Integration message flow to RabbitMQ

Slide 38

Slide 38 text

Deployment /O verticles

Slide 39

Slide 39 text

ary ps as set of loosely coupled components that live any – use the language(s) you want oncurrency – wave goodbye to most race conditions existing Java library ecosystem ystem – empower the community e.js apps too ve Vert.x is the platform for the new generation of p nd enterprise applications

Slide 40

Slide 40 text

Q&A