Introduction to Reactive Java

11,168 views

Published on

Introduction to Reactive Java library created by Netflix

Published in: Technology, News & Politics

Introduction to Reactive Java

  1. 1. REACTIVE JAVA
  2. 2. REACTIVE “readily responsive to a stimulus” Merriam-Webster dictionary
  3. 3. RX JAVA BY NETFLIX • A library for composing asynchronous and event-based programs using observable sequences for the Java VM • Implementation of Rx Observables from Microsoft • Targets the JVM not a language. Currently supports Java, Groovy, Clojure, and Scala • https://github.com/Netflix/RxJava • Apache License, Version 2.0
  4. 4. OBSERVER -> OBSERVABLE ->
  5. 5. SUBCRIPTIONS AND EVENTS subscribe onNext* onCompleted | onError t
  6. 6. SERVICE RETURNING OBSERVABLE public interface ShrödingersCat { Observable<Boolean> alive(); } cat .alive() .subscribe(status -> System.out.println(status));
  7. 7. SERVICE RETURNING OBSERVABLE public interface ShrödingersCat { Observable<Boolean> alive(); } cat .alive() .throttleWithTimeout(250, TimeUnit.MILLISECONDS) .distinctUntilChanged() .filter(isAlive -> isAlive) .map(Boolean::toString) .subscribe(status -> display.display(status));
  8. 8. OBSERVER public interface Observer<T> { void onCompleted(); void onError(Throwable e); void onNext(T args); }
  9. 9. SUBSCRIPTION public interface Subscription { void unsubscribe(); }
  10. 10. CREATING OBSERVABLES Observable<Boolean> watchTheCat = Observable.create(observer -> { observer.onNext(cat.isAlive()); observer.onCompleted(); return Subscriptions.empty(); }); • Executes all code when subscribed • Not asynchronous, not really a stream
  11. 11. CREATING OBSERVABLES Observable.create(observer -> { Future<?> future = executorService.submit(() -> { observer.onNext(cat.isAlive()); observer.onCompleted(); }); return Subscriptions.from(future); }); • • • • Executes code in separate thread (from thread pool executorService) Stream of events is delivered by the executor thread Thread calling onNext() runs all the operations defined on observable Future is cancelled if client unsubscribes
  12. 12. MARBLE DIAGRAM
  13. 13. MERGE(OBSERVABLE...)
  14. 14. CONCAT(OBSERVABLE...)
  15. 15. DEBOUNCE(LONG TIEMOUT, TIMEUNIT TU)
  16. 16. ZIP(OBSERVABLE, OBSERVABLE, FUNC2)
  17. 17. HOW WE USE IT – DATA FILE DISCOVERY Amazon S3 cache cache Disk cache mergeDelayError Memory

×