java programming in reactive - meetupfiles.meetup.com/3189882/reactive programming in java...

97
Reactive Programming in Java Copyright - Syncogni Consulting Pvt Ltd. All rights reserved.

Upload: trankhanh

Post on 13-Jun-2018

363 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Reactive Programming in JavaCopyright - Syncogni Consulting Pvt Ltd. All rights reserved.

Page 2: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Prerequisites:

● Functional Programming as in Java 8● Streams of Java 8● Lambda expressions● Method references

Page 3: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Expectations from the participants?

Page 4: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

● The slides are a bit descriptive, because:○ anybody can use it even after the session without

trainer○ it serves as PPT + study material○ participants read it silently/aloud during session

to maximize participation

Note:

Page 5: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Teaser begins….

Page 6: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

● Responsive● Resilient● Elastic● Message Driven

Official Reactive Manifesto

Page 7: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Get the official ribbon!!!

Page 8: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 9: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 10: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 11: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Teaser Ends….

Page 12: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Trailer begins….

Page 13: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

● Reactive = showing response to a stimulus● Reactive / Responsive● Scalable● Resilient / fault tolerant● Event driven● Observable sequences● Backpressure● Represented using marble diagrams

Reactive Programming

Page 14: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Reactive Programming

● Async facade - design pattern● Asynchronous

○ Ex 1: Do x, y, z after p is done○ Ex 2: Do p, q after r is started○ Ex 3:

Page 15: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Reactive Programming

● Polyglot● Implemented (Library is available) in

○ .NET○ Scala○ Clojure○ JavaScript○ Ruby○ Python○ C++, Groovy, Objective-C/Cocoa etc.

Page 16: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Reactive Programming

● Java Implementations:○ RxJava from Netflix○ Spring 5○ JSR 166 (headed by Doug Lee) to be implemented

in Java 9○ http://www.reactive-streams.org/○ Vert.x 3.0

Page 17: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

What is RxJava?

Note : RxJava = Reactive Extensions for Java

“A library for composing asynchronous and event based programs using observable sequences for the Java VM”

- Netflix

Page 18: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

● We are not blocked on some operation● We will respond to an event as and when we

receive the notification of that event● When / if the stock price changes, we will be

notified. Then only we will take appropriate action

● If the cricket score changes, we will hear a loud noise, then only look at the screen :)

Why Rx?

Page 19: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

● We don’t wait for the entire web page to be downloaded to display it

● Keep pushing the election results as and when the change happens

● Divide and conquer approach● Keep pushing the information like blackberry● Users will react to the pushed data

Why Rx?

Page 20: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Functional Reactive

Asynchronous

Values

Events

Push

Functional Reactive

Lambdas

Closures

Pure

Composable

Page 21: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Imperative vs Reactive

Iterable Observable

pull push

T next() onNext(T)

throws Exception onError(Exception)

returns; onCompleted()

Page 22: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Imperative vs Reactive

// Iterable<String> contains 379 strings

myIterable.skip( 16 ) //header.map( s -> s+”_transformed”)//blocking.forEach( e -> System.out.println(e) );

// Observable<String> contains 379 strings

myObservable.skip(16) //header.map( s -> s+" transformed" )//non-blocking.subscribe( e -> System.out.println(e) );

Page 23: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Scenarios:

Single Multiple

Sync T getData() Iterable<T> getData()

Async Future<T> getData() Observable<T> getData()

Page 24: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Trailer Ends!!!

Page 25: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Movie Begins...

Page 26: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Hello World RxJava

Page 27: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 28: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 29: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 30: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 31: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 32: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 33: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 34: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 35: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 36: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

SubscriberSubscriber<String> mySubscriber = new Subscriber<String>() {

@Override

public void onNext(String s) {

System.out.println(s);

}

@Override

public void onCompleted() {

System.out.println("Done");

}

@Override

public void onError(Throwable e) {

e.printStackTrace();

}

};

Page 37: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

ObservableObservable<String> myObservable = Observable.create(

new Observable.OnSubscribe<String>() {

@Override

public void call(Subscriber<? super String> sub) {

sub.onNext("Hello, world!");

sub.onCompleted();

}

});

Page 38: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Connecting codemyObservable.subscribe(mySubscriber);

Page 39: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

HelloWorldRxJava - Demo

Page 40: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Communication Protocol

● One item will be pushed to client during each ‘onNext’ call at the server side

● For every ‘onNext’ call on server, client can execute ‘onNext’ and receive an item

● Once server executes, ‘onCompleted’ or ‘onError’, it will not execute ‘onNext’ again

Page 41: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Communication Protocol

● Client will not initiate ‘onNext’ or ‘onCompleted’ or ‘onError’, but, it is the server

● ‘onError’ signifies that there is some error at the observable’s side

● The observable will call neither ‘onCompleted’ nor ‘onNext’ after calling ‘onError’

Page 42: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Communication Protocol

● onNext* (onCompleted | onError)? * = zero or more; ? = zero or one● Client may call ‘unsubscribe’ method at any

time, to signal the same to server● Server must check this using ‘subscriber.

isUnsubscribed()’ method and must stop sending further push notifications

Page 43: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Life Cycle of an Observable

● lazily starts emitting items only after subscription

● keeps emitting items till an error is encountered or till the end of stream is reached

● lazily emits another item only after the previous item is consumed

Page 44: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 45: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Ex 2 : Client tells the server to stop//client side code

Subscriber<String> mySubscriber = new Subscriber<String>() {

@Override

public void onNext(String s) {

System.out.println(s);

if (s.toUpperCase().contains("BAHU")) {

System.out.println("I got my movie!!!!");

unsubscribe();

}

}

};

Page 46: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Ex 2 : Client tells the server to stop//Server side

Observable<String> myObservable = Observable.create(new

Observable.OnSubscribe<String>() {

@Override

public void call(Subscriber<? super String> sub) {

List<String> list = Arrays.asList("Dhoom 3", "Bahubali",

"Star wars", "Batman");

for (String e : list) {

if (sub.isUnsubscribed()) {

break;

}

sub.onNext(e);

}

sub.onCompleted();

}

});

Page 47: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Ex 3 : Error Handling - Server codefor (String e : list) {

try {

if(e.equalsIgnoreCase("Bahubali 10")){

throw new Exception("Something is wrong!!!");

}

sub.onNext(e);

if (sub.isUnsubscribed()) {

break;

}

sub.onCompleted();

} catch (Exception e1) {

sub.onError(e1); break;

}

}

Page 48: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Ex 3 : Error Handling - Client code@Override

public void onError(Throwable e) {

e.printStackTrace();

}

Page 49: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

ManualErrorHandler - Demo

Page 50: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Ex 5: Take only some values - demo//I can process only next 2 orders

Observable<String> myCustomObservable = myObservable.take(2);

myCustomObservable.subscribe(mySubscriber);

Page 51: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Ex 6: Take orders only for some time//I can take orders for another 3 seconds

Observable<String> myCustomObservable = myObservable.take(3, TimeUnit.SECONDS);

myCustomObservable.subscribe(mySubscriber);

Page 52: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Ex 7: Skip some initial values//Skip initial 3 bytes which is a useless header

Observable<String> myCustomObservable =

myObservable.skip(3);

myCustomObservable.subscribe(mySubscriber);

Page 53: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Ex 8: Skip values for some time//Skip the values for initial 3 seconds

//while they are testing microphone

Observable<String> myCustomObservable =

myObservable.skip(3, TimeUnit.SECONDS);

myCustomObservable.subscribe(mySubscriber);

Page 54: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Ex 9: Skip and Take - Composition

myObservable.skip(1)

.take(2)

.subscribe(mySubscriber);

Page 55: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Ex 10: Filter the streammyObservable.skip(1)

.take(2)

.filter(e -> e.toUpperCase().contains("STAR"))

.subscribe(mySubscriber);

Page 56: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

SkipTakeFilterDemo

Page 57: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Ex 11: Two Subscribers - DemomyObservable.skip(1)

.take(2)

.filter(e -> e.toUpperCase().contains("STAR"))

.subscribe(mySubscriber1);

myObservable.skip(2)

.take(3)

.filter(e -> e.toUpperCase().contains("GOLD"))

.subscribe(mySubscriber2);

Page 58: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Ex 12: Combinators//Combinators - Combine / Merge 2 observables

Observable.merge(myObservable1, myObservable2)

.subscribe(mySubscriber);

Page 59: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Merge2Observables - Demo

Page 60: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Error Handling

Page 61: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Ex 13: onErrorResumeNext//on error, resume with the next observable

myObservable1.onErrorResumeNext(myObservable2)

.subscribe(mySubscriber);

Page 62: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Ex 13: onErrorResumeNext

Page 63: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Map vs FlatMap

● Both do transformation● Map:

○ maps one item to another item○ returns only one item○ synchronous

● FlatMap:○ maps one item to zero or more items○ returns an Observable stream○ asynchronous

Page 64: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 65: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

FlatMapmyObservable1.flatMap( s ->

{

String movie1 = s + " 1";

String movie2 = s + " 2";

String movie3 = s + " 3";

return Observable.just(movie1, movie2, movie3);

}

).subscribe(mySubscriber);

Page 66: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Transformations

Page 67: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Group By Transformation

● groupBy○ similar to ‘group by’ clause in SQL○ groups items according to the condition given○ Ex : can group a sequence of numbers based on

odd or even

Page 68: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 69: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

window - operator

● chunks an Observable into windows of given time frame

● each chunk is emitted as an independent Observable

● Ex : Observable.interval(600, TimeUnit.MILLISECONDS).window(2, TimeUnit.SECONDS)

Page 70: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 71: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

window - operator - Demo

Page 72: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Connectable Observable

● normal Observable starts emitting items immediately after subscribing to it

● ‘publish()’ is used to get a Connectable one from the normal

● Connectable Observable emits items after calling ‘connect()’ method on it.

● Connectable Observable can be made to wait till any/all Observers are subscribed

Page 73: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Connectable Observable

● Emits items only once for zero or more subscribers

● Subscribers are likely to lose some initial values if they join late

Page 74: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 75: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

ConnectableObservable - Demo

Page 76: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Climax

Page 77: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Case studies:

Page 78: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Case study 1: DB Access

Page 79: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Case study 2 : FlatMap

Page 80: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Case study 3 : Twitter App Setup

Page 81: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 82: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 83: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 84: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 85: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 86: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 87: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 88: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 89: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 90: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous
Page 91: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Case study 3 : Twitter App Demo

Page 92: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

THE END

Page 93: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Now revisit the teaser & the trailer :)

Page 94: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

References

● Google● Wikipedia● SO● RxJava API Docs● http://reactivex.io/documentation/operators.

html

Page 95: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

?

Page 96: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Let us stay in touch :Dinesh [email protected] : +91-888-415-9093USA : 001-281-303-5266https://in.linkedin.com/in/dineshbhatt

Page 97: Java Programming in Reactive - Meetupfiles.meetup.com/3189882/Reactive Programming in Java for...Reactive Programming Reactive Programming Async facade - design pattern Asynchronous

Thank you!!!