bed-con 2016 - i have a stream - einsichten in reactive programming

64

Upload: jan-carsten-lohmueller

Post on 06-Jan-2017

249 views

Category:

Education


0 download

TRANSCRIPT

Page 1: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 2: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

Moin BED-Con!

Page 3: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 4: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 5: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 6: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 7: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 8: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

@wps_de

wps_de

https://www.wps.de

Page 9: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 10: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

Reactive may refer to:

Generally, capable of having a reaction (disambiguation)

-Wikipedia

Page 11: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

Reactive programming is

a programming paradigm…

-Wikipedia

Page 12: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 13: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

R1.1(V0[:sig]) => R0 R1.2(V0[:m x sig]) => R0 0 => i | m + 1 => j [W [ i < j -> [ R1.1(V0[i: m x sig]) => R0 | i + 1 => i ] ] ] END R1.3() => R0 'H';'e';'l';'l';'o';',';' ';'w';'o';'r';'l';'d';'!' => Z0[: m x sig] R1.2(Z0) => R0 END

Page 14: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 15: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

OOP to me means

only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.

-Alan Kay

Page 16: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

OOP to me means

only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.

-Alan Kay

Page 17: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 18: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 19: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

Purely functional programming

is different. You don’t tell the computer what to do – you tell him what stuff is.

-Miran Lipovaca

Page 20: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

Purely functional programming

is different. You don’t tell the computer what to do – you tell him what stuff is.

-Miran Lipovaca

Page 21: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

fib 0 = 0fib 1 = 1fib n = fib (n-1) + fib (n-2)

𝑓1 = 𝑓2 = 1𝑓𝑛 = 𝑓𝑛−1 + 𝑓𝑛−2 für 𝑛 > 2

Page 22: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 23: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

Reactive programming is

a programming paradigm oriented around data flows and the propagation of change.

-Wikipedia

Page 24: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 25: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

[ 1, 1, 2, 3, 5, 8, 13 ]

Page 26: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

.filter(x -> x%2 == 0)

Page 27: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

[ 2, 8 ]

Page 28: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

x=100 x=234 x=234 x=144 x=305

y=1 y=634 y=137 y=680 y=32[ , , , , ->

Page 29: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 30: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

.filter(c -> c.x > 200)

Page 31: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

y=634 y=137 y=32

x=234 x=234 x=305[ , , ->

Page 32: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 33: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 34: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 35: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 36: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 37: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 38: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

http://reactivex.io/

Page 39: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 40: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 41: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 42: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 43: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 44: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 45: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

Subscription s = Observable.just("Hello, world!")

.subscribe(new Subscriber<String>() {

@Override

public void onCompleted() {

// do sth

}

@Override

public void onError(Throwable e) {

// handle error stuff

}

@Override

public void onNext(String s) {

// next!

}

}

);

Page 46: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 47: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 48: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 49: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 50: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

public class ColdExample {

public static void main(String[] args){

ArrayList<Integer> sampleList = new ArrayList<>();

for(int i = 0; i<5; i++){

sampleList.add(i);

}

Observable.from(sampleList)

.observeOn(Schedulers.computation())

.toBlocking()

.forEach(System.out::println);

}

}

Page 51: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 52: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

public static Observable<Integer> hotStream() {

return Observable.create((Subscriber<? super Integer> s) -> {

int i = 0;

while (!s.isUnsubscribed()) {

s.onNext(i++);

try {

Thread.sleep((long) (Math.random() * 100));

} catch (Exception e) {

// do nothing

}

}

}).subscribeOn(Schedulers.newThread());

}

taken from https://github.com/jhusain/learnrxjava

Page 53: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 54: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 55: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 56: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 57: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 58: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 59: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 60: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

http://reactivex.io/languages.html

Java

JavaScript

C#

C#(Unity)

Scala

Clojure

C++

Ruby

Python

Groovy

JRuby

Kotlin

Swift

Page 61: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

http://reactivex.io/tutorials.html

2 minute introduction to Rx by André Staltz

A Playful Introduction to Rx a video lecture by Erik Meijer

Page 62: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming

http://rxmarbles.com/

Page 63: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming
Page 64: BED-Con 2016 - I have a stream - Einsichten in Reactive Programming