Bringing Reactive to
Enterprise Java Developers
Julien Ponge, Thomas Segismont and Clement Escoffier
Red Hat
Slide 2
Slide 2 text
Reactive Summit 2018
2
Hello!
We work on Eclipse Vert.x, a toolkit for writing
asynchronous and reactive applications on the JVM
Slide 3
Slide 3 text
Reactive Summit 2018
3
(s a l p u )
50% off with mlponge code
Slide 4
Slide 4 text
Reactive Summit 2018
4
Slide 5
Slide 5 text
Reactive Summit 2018
5
Vert.x MicroProfile Jakarta EE
Introducing reactive to the EE world
...without breaking everything!
Slide 6
Slide 6 text
Times change quickly
Slide 7
Slide 7 text
Reactive Summit 2018
7
‘14
Java EE 8
‘17
From Java EE to Jakarta EE
‘13
Java EE 7
‘07
JAX-RS
‘09
CDI
(Java EE 6)
Microservices
Docker
Kubernetes
Reactive
manifesto
‘12
Vert.x
Node.js
MVC 1.0
‘11
Kafka Serverless
Slide 8
Slide 8 text
Reactive Summit 2018
8
Typical use-case
CRUD
Database with ORM
Development model
CDI (injection)
JAX-RS (REST API)
JPA, Bean Validation,
JTA, Management...
Execution model
Servlets
1 thread per request
Java EE: a feet in the past
Slide 9
Slide 9 text
Reactive Summit 2018
9
Not cloud-friendly, not reactive
Based on the concept of application server
➔ 1 server = many applications
Does not fit the “cloud model”
➔ Small, lightweight applications
➔ Each service in its own process
Slide 10
Slide 10 text
Reactive Summit 2018
10
Not cloud-friendly, not reactive
Most of the model is synchronous except
● Asynchronous servlets
● CDI events
Also:
➔ No stream support
➔ No back-pressure
Slide 11
Slide 11 text
Reactive Summit 2018
11
A new hope?
MicroProfile - the rogue child
➔ A new set of specs
➔ Microservice-friendly
➔ Very iterative
➔ Reactive working group!
Jakarta EE
➔ New spec model
➔ Faster processes
➔ Growing interest for reactive
Slide 12
Slide 12 text
Reactive and MicroProfile
Slide 13
Slide 13 text
Reactive Summit 2018
13
Traction from: Lightbend, Red Hat, Oracle, IBM
Reactive Microprofile specifications
Reactive Streams Operators
Reactive Messaging
Concurrency
Slide 14
Slide 14 text
Reactive Summit 2018
14
JAX-RS and reactive
Stream data as SSE
Slide 15
Slide 15 text
Reactive Summit 2018
15
Reactive Messaging (and data streaming)
Slide 16
Slide 16 text
Reactive Summit 2018
16
Reactive Messaging (and data streaming)
Manuel, pre and post
processing
Slide 17
Slide 17 text
Reactive Summit 2018
17
Reactive Stream Operators
Compose and
transform
Slide 18
Slide 18 text
Demos*
* no rabbits were harmed in the making of this.
Slide 19
Slide 19 text
Reactive Summit 2018
19
Step #1
RestEasy, server-sent events and reactive streams
Server
{sleeping, awake, eating}
Slide 20
Slide 20 text
Reactive Summit 2018
20
Step #2
Introducing MicroProfile Reactive Messaging
HealthDataBean
(temperature,
heartbeat, pressure)
Neo
(sleeping, awake,
eating)
Processor
state
Health data
Heartbeat
Slide 21
Slide 21 text
Reactive Summit 2018
21
Step #3
Introducing MicroProfile Reactive Streams Operators
HealthDataBean
(temperature,
heartbeat, pressure)
Processor
Health data
Heartbeat
HTTP Client
(Vert.x)
Snapshot service
(latest data)
Health data
Health data
1 2
Slide 22
Slide 22 text
Reactive Summit 2018
22
Step #4
Health data comes from MQTT
Processor
Health data
Heartbeat
HTTP Client
(Vert.x)
Snapshot service
(latest data)
Health data
Health data
1 2
MQTT
Slide 23
Slide 23 text
Reactive Summit 2018
23
Step #5
Event-driven and asynchronous microservices
MQTT
Kafka
Collector service
Snapshot service
Web application
Health data
Events split
by topic
SSE
HTTP
Events
Reactive Summit 2018
27
Roadmap
● MicroProfile Reactive Stream Operators
○ Approaching 1.0
○ Starting to infuse in the other MicroProfile specifications
○ Integration in the next MicroProfile release (February 2019)
● MicroProfile Reactive Messaging
○ Data streaming and Event-driven microservice
○ Integration in the next MicroProfile release (February 2019)
● MicroProfile Concurrency
○ Async context propagation
Slide 28
Slide 28 text
Reactive Summit 2018
28
(s a l p u #2)
50% off with mlponge code
Slide 29
Slide 29 text
Q&A
@jponge @tsegismont @clementplop
Slide 30
Slide 30 text
THANK YOU
plus.google.com/+RedHat
linkedin.com/company/red-hat
youtube.com/user/RedHatVideos
facebook.com/redhatinc
twitter.com/RedHat