Spring Data Couchbase: POJO Centric Data Access for Spring Developers: Couchbase Connect 2014
Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen...
-
Upload
trinhquynh -
Category
Documents
-
view
261 -
download
4
Transcript of Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen...
![Page 1: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/1.jpg)
Reactive Programming forJava Developers
Rossen Stoyanchev
![Page 2: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/2.jpg)
About Me❖ Spring Framework committer
❖ Spring MVC, WebSocket messaging
❖ Spring 5 Reactive
![Page 3: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/3.jpg)
Long-Running Shift to Concurrency
![Page 4: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/4.jpg)
10 years ago
Self-sufficient apps,
App server,
Keep it simple, don’t distribute
TodayIndependent services,
Cloud environment,
Distributed apps
![Page 5: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/5.jpg)
Changing expectations
Internet scale & resilience,
Efficient use of resources,
Latency is common
![Page 6: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/6.jpg)
Impact on programming model
Imperative logic not so simple when latency is the norm
Forced to deal with asynchronicity
Limits of scale
![Page 7: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/7.jpg)
There is another way
Fundamentally async & non-blocking
Using very few threads
Major shift but also major benefits
![Page 8: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/8.jpg)
Reactive Programming?
![Page 9: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/9.jpg)
In this talk
How would we design an async API in Java ?
Can we do better ?
Introducing reactive libraries
Spring reactive experience
![Page 10: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/10.jpg)
Design async API in Java
![Page 11: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/11.jpg)
Return one thing
...
...
![Page 12: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/12.jpg)
Usage
![Page 13: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/13.jpg)
Return it async style
...
May occur indifferent thread
![Page 14: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/14.jpg)
Usage
Ugh
![Page 15: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/15.jpg)
CompletableFuture (JDK 1.8)❖ Future with actions
❖ Actions trigger when Future completes
❖ Callback mechanism
![Page 16: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/16.jpg)
Return it async style with Java 1.8
...
...
![Page 17: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/17.jpg)
Usage
Async callback!
![Page 18: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/18.jpg)
Usage
Requires null check
![Page 19: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/19.jpg)
Return many
...
...
![Page 20: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/20.jpg)
Return many
...
... No callback till all users collected
![Page 21: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/21.jpg)
Return many
...
... It may be too many
![Page 22: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/22.jpg)
Return nothing
...
...
![Page 23: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/23.jpg)
Return nothing
...
...
Async notification:success or failure?
![Page 24: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/24.jpg)
Can we do better?
![Page 25: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/25.jpg)
❖ One notification per data item
❖ One notification for either completion or error
Async results as a stream
![Page 26: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/26.jpg)
Return Type Description Notificationsvoid Success onComplete()
void Failure onError(Throwable)
User Match onNext(User), onComplete()
User No match onComplete()
User Failure onError(Throwable)
List<User> Two matches onNext(User), onNext(User), onComplete()
List<User> No match onComplete()
List<User> Failure onError(Throwable)
![Page 27: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/27.jpg)
➢ Functional, declarative programming model
➢ Combine, transform, reduce sequences
➢ Focus on what, not how
Stream abstraction
![Page 28: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/28.jpg)
➢ Great example of the benefits of a stream API
➢ However built for collections mainly
➢ Pull-based, usable once
Java 8 Stream
![Page 29: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/29.jpg)
➢ Latency-sensitive data streams
➢ Infinite sequences
➢ Push-based notifications
Beyond collections
![Page 30: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/30.jpg)
Reactive Libraries
![Page 31: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/31.jpg)
Reactive library?➢ Stream-like API similar to Java 8
➢ Suited for any data sequence
➢ Latency-sensitive, infinite, collections
![Page 32: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/32.jpg)
Project Reactor➢ Reactive Streams foundation for the JVM
➢ API similar to ReactiveX
➢ Easy to bridge to Java 8 Stream
![Page 33: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/33.jpg)
Flux -- sequence of 0..N
![Page 34: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/34.jpg)
Mono -- sequence of 0..1
![Page 35: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/35.jpg)
Flux to Java Stream
![Page 36: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/36.jpg)
Mono to CompletableFuture
![Page 37: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/37.jpg)
More than a stream API➢ Reactor is back-pressure ready
➢ Reactive Streams spec
➢ Producers must not overwhelm consumers
![Page 38: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/38.jpg)
❖ Industry collaboration
❖ Small API, rules, TCK
❖ Reactive interoperability across libraries
Reactive Streams Spec
![Page 39: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/39.jpg)
“No single best fluent async/parallel API. CompletionStage best supports continuation-style programming on futures, and java.util.stream best supports (multi-stage, possibly-parallel) "pull" style operations on the elements of collections. Until now, one missing category was "push" style operations on items as they become available from an active source.“
Reactive Streams included in Java 9
Doug Lea, from initial announcement
![Page 40: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/40.jpg)
❖ Interfaces in java.util.concurrent.Flow
❖ SubmissionPublisher standalone bridge to Reactive Streams
❖ Tie-ins to CompletableFuture and Stream
Reactive Streams in Java 9
![Page 41: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/41.jpg)
Reactive Streams API
public interface Publisher<T> {
void subscribe(Subscriber<? super T> subscriber);
}
![Page 42: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/42.jpg)
Reactive Streams API
public interface Subscriber<T> {
void onSubscribe(Subscription sub);
void onNext(T item);
void onError(Throwable ex);
void onComplete();
}
![Page 43: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/43.jpg)
Reactive Streams API
public interface Subscriber<T> {
void onSubscribe(Subscription sub);
void onNext(T item);
void onError(Throwable ex);
void onComplete();
}
![Page 44: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/44.jpg)
Reactive repository
![Page 45: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/45.jpg)
Using the reactive repository
![Page 46: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/46.jpg)
Using the reactive repository
Subscriber triggers flow of data
![Page 47: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/47.jpg)
Using the reactive repository
Consume all data by default
![Page 48: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/48.jpg)
OutputonSubscribe
request(unbounded)
onNext(User: Jason)
onNext(User: Jay)
...
onComplete()
![Page 49: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/49.jpg)
Usage
Consume two at a time
![Page 50: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/50.jpg)
Output
onSubscribe
request(2)
onNext(User: Jason)
onNext(User: Jay)
request(2)
onNext(User: Joe)
onNext(User: John)
...
![Page 51: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/51.jpg)
❖ Currently 2.5 M4 (might change to 3.0 label)
❖ GA release scheduled for July
❖ Hands-on exercise, blog post series
More on Reactor
![Page 52: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/52.jpg)
Reactive Spring
![Page 53: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/53.jpg)
ReactiveSpring MVC ?
![Page 54: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/54.jpg)
Annotated controllers
![Page 55: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/55.jpg)
Controller Methods
![Page 56: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/56.jpg)
Spring MVC Spring Web Reactive
Annotated controllers
![Page 57: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/57.jpg)
...
![Page 58: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/58.jpg)
...Mono<Object>
![Page 59: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/59.jpg)
Spring MVC Spring Web Reactive
Servlet API ???
@MVC
![Page 60: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/60.jpg)
Spring MVC Spring Web Reactive
Servlet API ???
Servlet Container ???
@MVC
![Page 61: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/61.jpg)
Spring Web Reactive
@MVC
HTTPReactive Streams
Servlet 3.1 Reactor I/O RxNetty
![Page 62: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/62.jpg)
spring-reactive
Spring Framework 5.0 M1
![Page 63: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/63.jpg)
More Reactive Efforts
![Page 64: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/64.jpg)
Reactive Journey
![Page 65: Reactive Programming for Java Developers - QCon … Programming for Java Developers Rossen Stoyanchev About Me Spring Framework committer Spring MVC, WebSocket messaging Spring 5 Reactive](https://reader035.fdocuments.net/reader035/viewer/2022081312/5b20af847f8b9a76728b4baf/html5/thumbnails/65.jpg)
@rstoya05