nl-jug jfall 2014: reactive programming met java 8 en java ee 7

20
Reactive programming met Java SE 8 en Java EE 7 Martijn Blankestijn

Upload: martijn-blankestijn

Post on 07-Jul-2015

297 views

Category:

Software


2 download

DESCRIPTION

Reactive programming met Java 8 en Java EE 7, transform a synchronous, blocking REST-service to a non-blocking, asychronous, reactive service with completable futures

TRANSCRIPT

Page 1: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7

Reactive programming met Java SE 8 en Java EE 7

Martijn Blankestijn

Page 2: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7

Agenda

● Context

● Sequence, zonder futures

● Futures

● CompletableFuture

● Round-up

Page 3: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7

Context

Our responsiblity

Page 4: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7

@Path("customers") public class DemoOverviewResource {

@GET @Path("{username}") @Produces(APPLICATION_JSON) public CustomerOverview retrieve( @PathParam("username") String username) {

Customer customer = getCustomerInfo(username);

Contract[] contracts = getContracts(customer); Communication[] communications = getCommunications(customer);

return createOverview( customer, contracts, communications); }

Page 5: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7

Customer

Contract

Communications

TIME

Sequential

Page 6: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7

A Future

represents

the result

of an

asynchronous computation

Page 7: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7

public interface Future<V> {

boolean isDone();

V get()

V get(long timeout, TimeUnit unit)

Page 8: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7
Page 9: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7

Customer

Contract

Communications

TIME

Sequential

Futures

Page 10: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7
Page 11: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7

Reactive programmingis a programming paradigm

oriented around

data flows

and the

propagation of change

Page 12: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7
Page 13: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7

CompletableFutureA Future that may be

explicitly completed

and may trigger actions

upon its completion.

Page 14: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7

Chaining methods

runthenAcceptthenApply

thenComposewhenComplete

Page 15: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7

Joining methods

runAfterBoththenAcceptBoththenCombine...

allOf

Page 16: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7

Model the flow

Page 17: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7
Page 18: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7

Customer

Contract

Communications

TIME

Sequential

Futures

Completable Futures

Page 19: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7

Links

● Demo: https://github.com/martijnblankestijn/reactive-rest-demo

● JAX-RS

● Completable Future

● ManagedExecutor: JSR 236 Concurrency Utilities for Java EE

● Reactive Manifesto

Page 20: NL-JUG JFall 2014: Reactive programming met Java 8 en Java EE 7