Wprowadzenie do RxJava - Toruń JUG · Historia Próba odpowiedzi na: zbyt niski poziom abstrakcji...

12
Wprowadzenie do RxJava Mikołaj Fejzer

Transcript of Wprowadzenie do RxJava - Toruń JUG · Historia Próba odpowiedzi na: zbyt niski poziom abstrakcji...

Page 1: Wprowadzenie do RxJava - Toruń JUG · Historia Próba odpowiedzi na: zbyt niski poziom abstrakcji (callback hell) brak kontraktów brak naturalnego modelu komunikacji pojawienie

Wprowadzenie do RxJavaMikołaj Fejzer

Page 2: Wprowadzenie do RxJava - Toruń JUG · Historia Próba odpowiedzi na: zbyt niski poziom abstrakcji (callback hell) brak kontraktów brak naturalnego modelu komunikacji pojawienie

Agenda● Programowanie reaktywne

○ historia, założenia○ związek z programowaniem funkcyjnym○ Iterator vs Observer

● RxJava○ backpressure (przeciwciśnienie ?)○ testowanie, debugowanie

● Źródła, referencje

Page 3: Wprowadzenie do RxJava - Toruń JUG · Historia Próba odpowiedzi na: zbyt niski poziom abstrakcji (callback hell) brak kontraktów brak naturalnego modelu komunikacji pojawienie

HistoriaPróba odpowiedzi na:● zbyt niski poziom abstrakcji (callback hell)● brak kontraktów● brak naturalnego modelu komunikacji● pojawienie sie koncepcji wielu

rdzeni/procesorów

Page 4: Wprowadzenie do RxJava - Toruń JUG · Historia Próba odpowiedzi na: zbyt niski poziom abstrakcji (callback hell) brak kontraktów brak naturalnego modelu komunikacji pojawienie

Założenia● The Reactive Manifesto

○ Responsive○ Resilient○ Elastic○ Message Driven

● Odwrócenie kontroli

Page 5: Wprowadzenie do RxJava - Toruń JUG · Historia Próba odpowiedzi na: zbyt niski poziom abstrakcji (callback hell) brak kontraktów brak naturalnego modelu komunikacji pojawienie

Programowanie funkcyjne?● Obsevable

○ map, flatMap○ reduce, groupBy○ filter, take, skip, last○ zip, merge

● Kompozytowalność strumieni● Modelowanie zachowania● Niezmienność zdarzen

Page 6: Wprowadzenie do RxJava - Toruń JUG · Historia Próba odpowiedzi na: zbyt niski poziom abstrakcji (callback hell) brak kontraktów brak naturalnego modelu komunikacji pojawienie

Iterator vs ObserverIterator<E>{

boolean hasNext()

E next()

}

Observer<T>{

void onCompleted()

void onError(Throwable e)

void onNext(T t)

}

Page 7: Wprowadzenie do RxJava - Toruń JUG · Historia Próba odpowiedzi na: zbyt niski poziom abstrakcji (callback hell) brak kontraktów brak naturalnego modelu komunikacji pojawienie

Observable

Page 8: Wprowadzenie do RxJava - Toruń JUG · Historia Próba odpowiedzi na: zbyt niski poziom abstrakcji (callback hell) brak kontraktów brak naturalnego modelu komunikacji pojawienie

Rx na JVM● Dlaczego na JVM?

○ Rx.NET● Dlaczego RxJava?

○ RxScala○ RxGroovy

● Integracja○ Reactive Streams

Page 9: Wprowadzenie do RxJava - Toruń JUG · Historia Próba odpowiedzi na: zbyt niski poziom abstrakcji (callback hell) brak kontraktów brak naturalnego modelu komunikacji pojawienie

Buffer

Page 10: Wprowadzenie do RxJava - Toruń JUG · Historia Próba odpowiedzi na: zbyt niski poziom abstrakcji (callback hell) brak kontraktów brak naturalnego modelu komunikacji pojawienie

Window

Page 12: Wprowadzenie do RxJava - Toruń JUG · Historia Próba odpowiedzi na: zbyt niski poziom abstrakcji (callback hell) brak kontraktów brak naturalnego modelu komunikacji pojawienie

Dziękuję za uwagę

Q&A