Transcript
Page 1: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn

Reactive programming met Java SE 8 en Java EE 7

Martijn Blankestijn

Page 2: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn

Agenda

● Context

● Sequence, zonder futures

● Futures

● CompletableFuture

● Round-up

Page 3: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn

Context

Our responsiblity

Page 4: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn

@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: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn

Customer

Contract

Communications

TIME

Sequential

Page 6: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn

A Future

represents

the result

of an

asynchronous computation

Page 7: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn

public interface Future<V> {

boolean isDone();

V get()

V get(long timeout, TimeUnit unit)

Page 8: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn
Page 9: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn

Customer

Contract

Communications

TIME

Sequential

Futures

Page 10: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn
Page 11: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn

Reactive programmingis a programming paradigm

oriented around

data flows

and the

propagation of change

Page 12: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn
Page 13: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn

CompletableFutureA Future that may be

explicitly completed

and may trigger actions

upon its completion.

Page 14: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn

Chaining methods

runthenAcceptthenApply

thenComposewhenComplete

Page 15: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn

Joining methods

runAfterBoththenAcceptBoththenCombine...

allOf

Page 16: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn

Model the flow

Page 17: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn
Page 18: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn

Customer

Contract

Communications

TIME

Sequential

Futures

Completable Futures

Page 19: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn

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: Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn

Top Related