246
prepare for… Functional-Reactive …with Core Java 8/9

Functional reactive-talk 20170301-001

Embed Size (px)

Citation preview

Page 1: Functional reactive-talk 20170301-001

prepare for…

Functional-Reactive…with Core Java 8/9

Page 2: Functional reactive-talk 20170301-001

@SvenRuppert has been coding java since 1996

2

Page 3: Functional reactive-talk 20170301-001

@SvenRuppert has been coding java since 1996

Projects in the field of:•Automobile-industry•Energy•Finance / Leasing•Space- Satellit-•Government / UN / World-bank

Where?

•Europe•Asia - from India up to Malaysia

2

Page 4: Functional reactive-talk 20170301-001

Small AddOns

based on Java8

@SvenRuppert

Page 5: Functional reactive-talk 20170301-001

4

@SvenRuppertJava8 - Optional<T>

Page 6: Functional reactive-talk 20170301-001

4

@SvenRuppertJava8 - Optional<T>

Page 7: Functional reactive-talk 20170301-001

4

@SvenRuppertJava8 - Optional<T>

Page 8: Functional reactive-talk 20170301-001

4

@SvenRuppertJava8 - Optional<T>

Page 9: Functional reactive-talk 20170301-001

4

@SvenRuppertJava8 - Optional<T>

Page 10: Functional reactive-talk 20170301-001

4

@SvenRuppertJava8 - Optional<T>

Optional - [ Int, Double, Long ]

Page 11: Functional reactive-talk 20170301-001

5

@SvenRuppertJava8 - Functional Interfaces

Page 12: Functional reactive-talk 20170301-001

5

@SvenRuppertJava8 - Functional Interfaces

Page 13: Functional reactive-talk 20170301-001

5

@SvenRuppertJava8 - Functional Interfaces

Page 14: Functional reactive-talk 20170301-001

6

@SvenRuppertJava8 - Functional Interfaces

Page 15: Functional reactive-talk 20170301-001

7

@SvenRuppertJava8 - Functional Interfaces

Page 16: Functional reactive-talk 20170301-001

7

@SvenRuppertJava8 - Functional Interfaces

Page 17: Functional reactive-talk 20170301-001

7

@SvenRuppertJava8 - Functional Interfaces

Page 18: Functional reactive-talk 20170301-001

7

@SvenRuppertJava8 - Functional Interfaces

Page 19: Functional reactive-talk 20170301-001

7

@SvenRuppertJava8 - Functional Interfaces

Page 20: Functional reactive-talk 20170301-001

7

@SvenRuppertJava8 - Functional Interfaces

Page 21: Functional reactive-talk 20170301-001

7

@SvenRuppertJava8 - Functional Interfaces

Page 22: Functional reactive-talk 20170301-001

8

@SvenRuppertJava8 - Functional Interfaces

Page 23: Functional reactive-talk 20170301-001

8

@SvenRuppertJava8 - Functional Interfaces

Page 24: Functional reactive-talk 20170301-001

8

@SvenRuppertJava8 - Functional Interfaces

Page 25: Functional reactive-talk 20170301-001

9

@SvenRuppertJava9 - Functional Interfaces

Java9 - JEP213

Page 26: Functional reactive-talk 20170301-001

Functions

how use Functions…

@SvenRuppert

Page 27: Functional reactive-talk 20170301-001

Functions - Java8

11

@SvenRuppert

Page 28: Functional reactive-talk 20170301-001

Functions - Java8

11

@SvenRuppert

Page 29: Functional reactive-talk 20170301-001

Functions - Java8

11

@SvenRuppert

Page 30: Functional reactive-talk 20170301-001

Functions - Java8

11

@SvenRuppert

Page 31: Functional reactive-talk 20170301-001

Functions - Java8

11

@SvenRuppert

Page 32: Functional reactive-talk 20170301-001

Functions - Java8

11

@SvenRuppert

Page 33: Functional reactive-talk 20170301-001

Functions - Java8

12

@SvenRuppert

Page 34: Functional reactive-talk 20170301-001

Functions - Java8

12

@SvenRuppert

Page 35: Functional reactive-talk 20170301-001

Functions - Java8

12

@SvenRuppert

Page 36: Functional reactive-talk 20170301-001

Functions - Java8

12

@SvenRuppert

Page 37: Functional reactive-talk 20170301-001

Functions - Java8

12

@SvenRuppert

Page 38: Functional reactive-talk 20170301-001

Functions - Java8

12

@SvenRuppert

Page 39: Functional reactive-talk 20170301-001

Functions - Java8

12

@SvenRuppert

Page 40: Functional reactive-talk 20170301-001

Functions - Java8

12

@SvenRuppert

Page 41: Functional reactive-talk 20170301-001

Functions - Java8

12

@SvenRuppert

Page 42: Functional reactive-talk 20170301-001

Functions - Java8

13

@SvenRuppert

Page 43: Functional reactive-talk 20170301-001

Functions - Java8

13

@SvenRuppert

Page 44: Functional reactive-talk 20170301-001

Functions - Java8

13

@SvenRuppert

Page 45: Functional reactive-talk 20170301-001

Functions - Java8

13

@SvenRuppert

Page 46: Functional reactive-talk 20170301-001

Functions - Java8

13

@SvenRuppert

Page 47: Functional reactive-talk 20170301-001

Functions - Java8

13

@SvenRuppert

Page 48: Functional reactive-talk 20170301-001

Functions - Java8

14

@SvenRuppert

Page 49: Functional reactive-talk 20170301-001

Functions - Java8

14

@SvenRuppert

Page 50: Functional reactive-talk 20170301-001

Functions - Java8

15

@SvenRuppert

Page 51: Functional reactive-talk 20170301-001

Functions - Java8

15

@SvenRuppert

Page 52: Functional reactive-talk 20170301-001

Functions - Java8

15

@SvenRuppert

Page 53: Functional reactive-talk 20170301-001

Functions - Java8

16

@SvenRuppert

Page 54: Functional reactive-talk 20170301-001

Functions - Java8

16

@SvenRuppert

Page 55: Functional reactive-talk 20170301-001

Functions - Java8

17

@SvenRuppert

Page 56: Functional reactive-talk 20170301-001

Refactoring example

based on Java8

@SvenRuppert

Page 57: Functional reactive-talk 20170301-001

19

@SvenRuppertJava8 - Functional Interfaces - Example

typical legacy implementation

Page 58: Functional reactive-talk 20170301-001

20

@SvenRuppertJava8 - Functional Interfaces - Example

typical legacy implementation

Page 59: Functional reactive-talk 20170301-001

21

@SvenRuppertJava8 - Functional Interfaces - Example

Page 60: Functional reactive-talk 20170301-001

21

@SvenRuppertJava8 - Functional Interfaces - Example

Page 61: Functional reactive-talk 20170301-001

21

@SvenRuppertJava8 - Functional Interfaces - Example

Page 62: Functional reactive-talk 20170301-001

21

@SvenRuppertJava8 - Functional Interfaces - Example

Page 63: Functional reactive-talk 20170301-001

21

@SvenRuppertJava8 - Functional Interfaces - Example

Page 64: Functional reactive-talk 20170301-001

21

@SvenRuppertJava8 - Functional Interfaces - Example

Page 65: Functional reactive-talk 20170301-001

22

@SvenRuppertJava8 - Functional Interfaces - Example

Page 66: Functional reactive-talk 20170301-001

22

@SvenRuppertJava8 - Functional Interfaces - Example

Page 67: Functional reactive-talk 20170301-001

22

@SvenRuppertJava8 - Functional Interfaces - Example

Page 68: Functional reactive-talk 20170301-001

22

@SvenRuppertJava8 - Functional Interfaces - Example

Page 69: Functional reactive-talk 20170301-001

22

@SvenRuppertJava8 - Functional Interfaces - Example

Page 70: Functional reactive-talk 20170301-001

23

@SvenRuppertJava8 - Functional Interfaces - Example

Page 71: Functional reactive-talk 20170301-001

23

@SvenRuppertJava8 - Functional Interfaces - Example

Page 72: Functional reactive-talk 20170301-001

23

@SvenRuppertJava8 - Functional Interfaces - Example

Page 73: Functional reactive-talk 20170301-001

24

@SvenRuppertJava8 - Functional Interfaces - Example

Page 74: Functional reactive-talk 20170301-001

24

@SvenRuppertJava8 - Functional Interfaces - Example

Page 75: Functional reactive-talk 20170301-001

24

@SvenRuppertJava8 - Functional Interfaces - Example

Page 76: Functional reactive-talk 20170301-001

24

@SvenRuppertJava8 - Functional Interfaces - Example

Page 77: Functional reactive-talk 20170301-001

25

@SvenRuppertJava8 - Functional Interfaces - Example

Page 78: Functional reactive-talk 20170301-001

25

@SvenRuppertJava8 - Functional Interfaces - Example

Page 79: Functional reactive-talk 20170301-001

26

@SvenRuppertJava8 - Functional Interfaces - Example

Sourcecode is on github

Page 80: Functional reactive-talk 20170301-001

26

@SvenRuppertJava8 - Functional Interfaces - Example

Sourcecode is on github

Page 81: Functional reactive-talk 20170301-001

Pattern in Java 8/9

how pattern will change…

@SvenRuppert

Page 82: Functional reactive-talk 20170301-001

Virtual Proxy

28

@SvenRuppert

Page 83: Functional reactive-talk 20170301-001

Virtual Proxy

28

@SvenRuppert

public class ServiceProxy implements Service { private Service service = new ServiceImpl(); public String work(String txt) { return service.work(txt); }}

Page 84: Functional reactive-talk 20170301-001

Virtual Proxy

28

@SvenRuppert

public class ServiceProxy implements Service { private Service service = new ServiceImpl(); public String work(String txt) { return service.work(txt); }}

What could we

change now ?

Page 85: Functional reactive-talk 20170301-001

Virtual Proxy

28

@SvenRuppert

public class ServiceProxy implements Service { private Service service = new ServiceImpl(); public String work(String txt) { return service.work(txt); }}

What could we

change now ? Virtual Proxy:

create the Delegator later

Page 86: Functional reactive-talk 20170301-001

Virtual Proxy

28

@SvenRuppert

public class ServiceProxy implements Service { private Service service = new ServiceImpl(); public String work(String txt) { return service.work(txt); }}

What could we

change now ? Virtual Proxy:

create the Delegator later

public class VirtualService implements Service { private Service service = null; public String work(String txt) { if(service == null) { service = new ServiceImpl(); } return service.work(txt); }}

Page 87: Functional reactive-talk 20170301-001

Virtual Proxy

28

@SvenRuppert

public class ServiceProxy implements Service { private Service service = new ServiceImpl(); public String work(String txt) { return service.work(txt); }}

What could we

change now ? Virtual Proxy:

create the Delegator later

public class VirtualService implements Service { private Service service = null; public String work(String txt) { if(service == null) { service = new ServiceImpl(); } return service.work(txt); }}

Page 88: Functional reactive-talk 20170301-001

Virtual Proxy

28

@SvenRuppert

public class ServiceProxy implements Service { private Service service = new ServiceImpl(); public String work(String txt) { return service.work(txt); }}

What could we

change now ? Virtual Proxy:

create the Delegator later

public class VirtualService implements Service { private Service service = null; public String work(String txt) { if(service == null) { service = new ServiceImpl(); } return service.work(txt); }}

Page 89: Functional reactive-talk 20170301-001

Virtual Proxy

29

@SvenRuppert

public class VirtualService implements Service { private Service service = null; public String work(String txt) { if(service == null) { service = new ServiceImpl(); }

return service.work(txt); }}

Page 90: Functional reactive-talk 20170301-001

Virtual Proxy

29

@SvenRuppert

public class VirtualService implements Service { private Service service = null; public String work(String txt) { if(service == null) { service = new ServiceImpl(); }

return service.work(txt); }}

Page 91: Functional reactive-talk 20170301-001

Virtual Proxy

29

@SvenRuppert

public class VirtualService implements Service { private Service service = null; public String work(String txt) { if(service == null) { service = new ServiceImpl(); }

return service.work(txt); }}

This is NOT ThreadSafe

Page 92: Functional reactive-talk 20170301-001

Virtual Proxy

29

@SvenRuppert

public class VirtualService implements Service { private Service service = null; public String work(String txt) { if(service == null) { service = new ServiceImpl(); }

return service.work(txt); }}

This is NOT ThreadSafe

Page 93: Functional reactive-talk 20170301-001

Virtual Proxy

29

@SvenRuppert

public class VirtualService implements Service { private Service service = null; public String work(String txt) { if(service == null) { service = new ServiceImpl(); }

return service.work(txt); }}

This is NOT ThreadSafefixed decision for

an implementation

Page 94: Functional reactive-talk 20170301-001

Virtual Proxy

29

@SvenRuppert

public class VirtualService implements Service { private Service service = null; public String work(String txt) { if(service == null) { service = new ServiceImpl(); }

return service.work(txt); }}

This is NOT ThreadSafefixed decision for

an implementation

Page 95: Functional reactive-talk 20170301-001

Virtual Proxy

29

@SvenRuppert

public class VirtualService implements Service { private Service service = null; public String work(String txt) { if(service == null) { service = new ServiceImpl(); }

return service.work(txt); }}

This is NOT ThreadSafefixed decision for

an implementation

how to combine it with a FactoryPattern ?

Page 96: Functional reactive-talk 20170301-001

Virtual Proxy

30

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

Page 97: Functional reactive-talk 20170301-001

Virtual Proxy

30

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

Page 98: Functional reactive-talk 20170301-001

Virtual Proxy

30

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

public interface ServiceFactory { Service createInstance();}

Page 99: Functional reactive-talk 20170301-001

Virtual Proxy

30

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

public interface ServiceFactory { Service createInstance();}

Page 100: Functional reactive-talk 20170301-001

Virtual Proxy

30

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

public interface ServiceFactory { Service createInstance();}

public interface ServiceStrategyFactory { Service realSubject(ServiceFactory factory);}

Page 101: Functional reactive-talk 20170301-001

Virtual Proxy - Not - ThreadSafe

31

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

Page 102: Functional reactive-talk 20170301-001

Virtual Proxy - Not - ThreadSafe

31

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

Page 103: Functional reactive-talk 20170301-001

Virtual Proxy - Not - ThreadSafe

31

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

private ServiceFactory serviceFactory = ServiceImpl::new;

Page 104: Functional reactive-talk 20170301-001

Virtual Proxy - Not - ThreadSafe

31

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

private ServiceFactory serviceFactory = ServiceImpl::new;

Page 105: Functional reactive-talk 20170301-001

Virtual Proxy - Not - ThreadSafe

31

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

public class ServiceStrategyFactoryImpl implements ServiceStrategyFactory { Service realSubject; public Service realSubject(final ServiceFactory factory) { if (realSubject == null) { realSubject = factory.createInstance(); } return realSubject; }}

private ServiceFactory serviceFactory = ServiceImpl::new;

Page 106: Functional reactive-talk 20170301-001

Virtual Proxy - Not - ThreadSafe

32

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

Page 107: Functional reactive-talk 20170301-001

Virtual Proxy - Not - ThreadSafe

32

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

public class ServiceProxy implements Service {

Page 108: Functional reactive-talk 20170301-001

Virtual Proxy - Not - ThreadSafe

32

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

public class ServiceProxy implements Service {private ServiceFactory serviceFactory = ServiceImpl::new;

Page 109: Functional reactive-talk 20170301-001

Virtual Proxy - Not - ThreadSafe

32

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

public class ServiceProxy implements Service {private ServiceFactory serviceFactory = ServiceImpl::new;private ServiceStrategyFactory strategyFactory = new ServiceStrategyFactoryImpl();

Page 110: Functional reactive-talk 20170301-001

Virtual Proxy - Not - ThreadSafe

32

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

public class ServiceProxy implements Service {private ServiceFactory serviceFactory = ServiceImpl::new;private ServiceStrategyFactory strategyFactory = new ServiceStrategyFactoryImpl();

public String work(String txt) {

Page 111: Functional reactive-talk 20170301-001

Virtual Proxy - Not - ThreadSafe

32

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

public class ServiceProxy implements Service {private ServiceFactory serviceFactory = ServiceImpl::new;private ServiceStrategyFactory strategyFactory = new ServiceStrategyFactoryImpl();

public String work(String txt) {

}}

Page 112: Functional reactive-talk 20170301-001

Virtual Proxy - Not - ThreadSafe

32

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

public class ServiceProxy implements Service {private ServiceFactory serviceFactory = ServiceImpl::new;private ServiceStrategyFactory strategyFactory = new ServiceStrategyFactoryImpl();

public String work(String txt) {return

}}

Page 113: Functional reactive-talk 20170301-001

Virtual Proxy - Not - ThreadSafe

32

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

public class ServiceProxy implements Service {private ServiceFactory serviceFactory = ServiceImpl::new;private ServiceStrategyFactory strategyFactory = new ServiceStrategyFactoryImpl();

public String work(String txt) {return strategyFactory

}}

Page 114: Functional reactive-talk 20170301-001

Virtual Proxy - Not - ThreadSafe

32

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

public class ServiceProxy implements Service {private ServiceFactory serviceFactory = ServiceImpl::new;private ServiceStrategyFactory strategyFactory = new ServiceStrategyFactoryImpl();

public String work(String txt) {return strategyFactory .realSubject(

}}

Page 115: Functional reactive-talk 20170301-001

Virtual Proxy - Not - ThreadSafe

32

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

public class ServiceProxy implements Service {private ServiceFactory serviceFactory = ServiceImpl::new;private ServiceStrategyFactory strategyFactory = new ServiceStrategyFactoryImpl();

public String work(String txt) {return strategyFactory .realSubject(serviceFactory

}}

Page 116: Functional reactive-talk 20170301-001

Virtual Proxy - Not - ThreadSafe

32

@SvenRuppert

if(service == null) { service = new ServiceImpl(); }

public class ServiceProxy implements Service {private ServiceFactory serviceFactory = ServiceImpl::new;private ServiceStrategyFactory strategyFactory = new ServiceStrategyFactoryImpl();

public String work(String txt) {return strategyFactory .realSubject(serviceFactory).work(txt);

}}

Page 117: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

33

@SvenRuppert

Page 118: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

33

@SvenRuppert

Page 119: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

33

@SvenRuppert

Page 120: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

33

@SvenRuppert

Page 121: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

34

@SvenRuppert

Page 122: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

34

@SvenRuppert

Page 123: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

34

@SvenRuppert

Page 124: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

34

@SvenRuppert

Page 125: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

35

@SvenRuppert

Page 126: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

35

@SvenRuppert

Page 127: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

35

@SvenRuppert

Page 128: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

35

@SvenRuppert

Page 129: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

36

@SvenRuppert

Page 130: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

36

@SvenRuppert

Page 131: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

37

@SvenRuppert

Page 132: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

37

@SvenRuppert

Page 133: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

37

@SvenRuppert

Page 134: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

37

@SvenRuppert

Page 135: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

37

@SvenRuppert

Page 136: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

38

@SvenRuppert

Page 137: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

38

@SvenRuppert

Page 138: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

39

@SvenRuppert

Page 139: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

39

@SvenRuppert

Page 140: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

40

@SvenRuppert

Page 141: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

40

@SvenRuppert

Page 142: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

41

@SvenRuppert

Page 143: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

41

@SvenRuppert

Page 144: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

42

@SvenRuppert

Page 145: Functional reactive-talk 20170301-001

Virtual Proxy - Show some code….

42

@SvenRuppert

Page 146: Functional reactive-talk 20170301-001

Interpreter - pre Java8

43

@SvenRuppert

Page 147: Functional reactive-talk 20170301-001

Interpreter - pre Java8

44

@SvenRuppert

Page 148: Functional reactive-talk 20170301-001

Interpreter - pre Java8

44

@SvenRuppert

Page 149: Functional reactive-talk 20170301-001

Interpreter - pre Java8

44

@SvenRuppert

Page 150: Functional reactive-talk 20170301-001

Interpreter - pre Java8

45

@SvenRuppert

Page 151: Functional reactive-talk 20170301-001

Interpreter - pre Java8

45

@SvenRuppert

Page 152: Functional reactive-talk 20170301-001

Interpreter - pre Java8

45

@SvenRuppert

Page 153: Functional reactive-talk 20170301-001

Interpreter - pre Java8

46

@SvenRuppert

Page 154: Functional reactive-talk 20170301-001

Interpreter - pre Java8

46

@SvenRuppert

Page 155: Functional reactive-talk 20170301-001

Interpreter - pre Java8

46

@SvenRuppert

Page 156: Functional reactive-talk 20170301-001

Interpreter - pre Java8

46

@SvenRuppert

Page 157: Functional reactive-talk 20170301-001

Interpreter - Java8 - Java9

47

@SvenRuppert

Page 158: Functional reactive-talk 20170301-001

Interpreter - Java8 - Java9

47

@SvenRuppert

Page 159: Functional reactive-talk 20170301-001

Interpreter - Java8 - Java9

47

@SvenRuppert

Page 160: Functional reactive-talk 20170301-001

Interpreter - Java8 - Java9

48

@SvenRuppert

Main Idea - DataStructure to Function

Page 161: Functional reactive-talk 20170301-001

Interpreter - Java8 - Java9

48

@SvenRuppert

Main Idea - DataStructure to Function

Page 162: Functional reactive-talk 20170301-001

Interpreter - Java8 - Java9

48

@SvenRuppert

Main Idea - DataStructure to Function

Page 163: Functional reactive-talk 20170301-001

Interpreter - Java8 - Java9

49

@SvenRuppert

Page 164: Functional reactive-talk 20170301-001

Interpreter - Java8 - Java9

49

@SvenRuppert

Page 165: Functional reactive-talk 20170301-001

Memoizing

pure functional behavior - show Source code

@SvenRuppert

Page 166: Functional reactive-talk 20170301-001

@SvenRuppert

Memoizing @SvenRuppert

Page 167: Functional reactive-talk 20170301-001

@SvenRuppert

Memoizing @SvenRuppert

Page 168: Functional reactive-talk 20170301-001

@SvenRuppert

Memoizing @SvenRuppert

Page 169: Functional reactive-talk 20170301-001

@SvenRuppert

Memoizing @SvenRuppert

Page 170: Functional reactive-talk 20170301-001

@SvenRuppert

Memoizing @SvenRuppert

Page 171: Functional reactive-talk 20170301-001

@SvenRuppert

Memoizing @SvenRuppert

Page 172: Functional reactive-talk 20170301-001

@SvenRuppert

Memoizing @SvenRuppert

Page 173: Functional reactive-talk 20170301-001

@SvenRuppert

Memoizing @SvenRuppert

Page 174: Functional reactive-talk 20170301-001

@SvenRuppert

Memoizing @SvenRuppert

Page 175: Functional reactive-talk 20170301-001

@SvenRuppert

Memoizing @SvenRuppert

Page 176: Functional reactive-talk 20170301-001

@SvenRuppert

Memoizing @SvenRuppert

Page 177: Functional reactive-talk 20170301-001

Reactive stuff

how use Functions… async…

@SvenRuppert

Page 178: Functional reactive-talk 20170301-001

Observer

63

@SvenRuppert

Page 179: Functional reactive-talk 20170301-001

Observer

63

@SvenRuppert

Page 180: Functional reactive-talk 20170301-001

Observer

63

@SvenRuppert

Page 181: Functional reactive-talk 20170301-001

Observer

63

@SvenRuppert

Page 182: Functional reactive-talk 20170301-001

Observer

63

@SvenRuppert

Page 183: Functional reactive-talk 20170301-001

64

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 184: Functional reactive-talk 20170301-001

64

@SvenRuppertJava8 - Concurrency - CompletableFuture

Process

Page 185: Functional reactive-talk 20170301-001

64

@SvenRuppertJava8 - Concurrency - CompletableFuture

Process

Thread

Page 186: Functional reactive-talk 20170301-001

64

@SvenRuppertJava8 - Concurrency - CompletableFuture

Process

Thread

Fiber

Page 187: Functional reactive-talk 20170301-001

64

@SvenRuppertJava8 - Concurrency - CompletableFuture

Process

Thread

Fiber

Page 188: Functional reactive-talk 20170301-001

64

@SvenRuppertJava8 - Concurrency - CompletableFuture

Process

Thread

Fiber

CompletionStage

Page 189: Functional reactive-talk 20170301-001

64

@SvenRuppertJava8 - Concurrency - CompletableFuture

Process

Thread

Fiber

CompletionStage

Page 190: Functional reactive-talk 20170301-001

64

@SvenRuppertJava8 - Concurrency - CompletableFuture

Process

Thread

Fiber

CompletionStage

Page 191: Functional reactive-talk 20170301-001

64

@SvenRuppertJava8 - Concurrency - CompletableFuture

Process

Thread

Fiber

CompletionStage CompletionStage

Page 192: Functional reactive-talk 20170301-001

64

@SvenRuppertJava8 - Concurrency - CompletableFuture

Process

Thread

Fiber

CompletionStage CompletionStage

Page 193: Functional reactive-talk 20170301-001

64

@SvenRuppertJava8 - Concurrency - CompletableFuture

Process

Thread

Fiber

CompletionStage CompletionStage CompletionStage

Page 194: Functional reactive-talk 20170301-001

65

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 195: Functional reactive-talk 20170301-001

66

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 196: Functional reactive-talk 20170301-001

66

@SvenRuppertJava8 - Concurrency - CompletableFuture

Value A

Page 197: Functional reactive-talk 20170301-001

66

@SvenRuppertJava8 - Concurrency - CompletableFuture

Value A Value B

Page 198: Functional reactive-talk 20170301-001

66

@SvenRuppertJava8 - Concurrency - CompletableFuture

Value A Value B

Page 199: Functional reactive-talk 20170301-001

66

@SvenRuppertJava8 - Concurrency - CompletableFuture

Value A Value B

Page 200: Functional reactive-talk 20170301-001

66

@SvenRuppertJava8 - Concurrency - CompletableFuture

Operator 1

Value A Value B

Page 201: Functional reactive-talk 20170301-001

66

@SvenRuppertJava8 - Concurrency - CompletableFuture

Operator 1

Value A Value B

Page 202: Functional reactive-talk 20170301-001

66

@SvenRuppertJava8 - Concurrency - CompletableFuture

Operator 1

Value A

Operator 2a

Value B

Page 203: Functional reactive-talk 20170301-001

66

@SvenRuppertJava8 - Concurrency - CompletableFuture

Operator 1

Value A

Operator 2a

Value B Value C

Page 204: Functional reactive-talk 20170301-001

66

@SvenRuppertJava8 - Concurrency - CompletableFuture

Operator 1

Value A

Operator 2a

Value B Value C

Page 205: Functional reactive-talk 20170301-001

66

@SvenRuppertJava8 - Concurrency - CompletableFuture

Operator 1

Value A

Operator 2a

Value B Value C

Page 206: Functional reactive-talk 20170301-001

66

@SvenRuppertJava8 - Concurrency - CompletableFuture

Operator 1

Value A

Operator 2a

Result

Value B Value C

Page 207: Functional reactive-talk 20170301-001

67

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 208: Functional reactive-talk 20170301-001

67

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 209: Functional reactive-talk 20170301-001

67

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 210: Functional reactive-talk 20170301-001

68

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 211: Functional reactive-talk 20170301-001

68

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 212: Functional reactive-talk 20170301-001

68

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 213: Functional reactive-talk 20170301-001

69

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 214: Functional reactive-talk 20170301-001

69

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 215: Functional reactive-talk 20170301-001

70

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 216: Functional reactive-talk 20170301-001

70

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 217: Functional reactive-talk 20170301-001

70

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 218: Functional reactive-talk 20170301-001

71

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 219: Functional reactive-talk 20170301-001

71

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 220: Functional reactive-talk 20170301-001

71

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 221: Functional reactive-talk 20170301-001

72

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 222: Functional reactive-talk 20170301-001

72

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 223: Functional reactive-talk 20170301-001

72

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 224: Functional reactive-talk 20170301-001

73

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 225: Functional reactive-talk 20170301-001

73

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 226: Functional reactive-talk 20170301-001

74

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 227: Functional reactive-talk 20170301-001

74

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 228: Functional reactive-talk 20170301-001

74

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 229: Functional reactive-talk 20170301-001

74

@SvenRuppertJava8 - Concurrency - CompletableFuture

Page 230: Functional reactive-talk 20170301-001

75

@SvenRuppertJava8 - Concurrency - CompletableFuture

Operator 1

Value A

Operator 2a

Result

Value B Value C

Page 231: Functional reactive-talk 20170301-001

Java 9

some nice news…

@SvenRuppert

Page 232: Functional reactive-talk 20170301-001

Java9 - Optional

77

@SvenRuppert

Page 233: Functional reactive-talk 20170301-001

Java9 - Optional

77

@SvenRuppert

Page 234: Functional reactive-talk 20170301-001

Java9 - Optional

77

@SvenRuppert

Page 235: Functional reactive-talk 20170301-001

Java9 - Optional

77

@SvenRuppert

Page 236: Functional reactive-talk 20170301-001

Java9 - Optional

77

@SvenRuppert

Page 237: Functional reactive-talk 20170301-001

Java9 - JEP266

78

@SvenRuppert

Page 238: Functional reactive-talk 20170301-001

Java9 - JEP266

78

@SvenRuppert

we got Publisher / Subscriber

Page 239: Functional reactive-talk 20170301-001

Java9 - JEP266

78

@SvenRuppert

we got Publisher / Subscriber

Page 240: Functional reactive-talk 20170301-001

Summary

79

@SvenRuppert

places to read more about it

Page 241: Functional reactive-talk 20170301-001

Summary

79

@SvenRuppert

places to read more about it

www.functional-reactive.org

Page 242: Functional reactive-talk 20170301-001

Summary

79

@SvenRuppert

places to read more about it

www.functional-reactive.org

Page 243: Functional reactive-talk 20170301-001

Summary

79

@SvenRuppert

places to read more about it

www.functional-reactive.org

www.java-9.org

Page 244: Functional reactive-talk 20170301-001

Summary

80

@SvenRuppert

Now it is time to relax again ;-)

Page 245: Functional reactive-talk 20170301-001

Summary

81

@SvenRuppert

please, follow me ;-)

@SvenRuppert

Page 246: Functional reactive-talk 20170301-001

Summary

81

@SvenRuppert

please, follow me ;-)

@SvenRuppert

Thank You !!!