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

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

Jul 02, 2015

Download

Technology

NLJUG

Java SE 8 is een grote stap in de evolutie van het Java Platform. Java 8 introduceerde lambda's, een nieuwe Date-Time API en nog veel meer. Completable Futures is een nieuwe Java 8 feature die vaak over het hoofd wordt gezien. Completable Futures (a.k.a. promises) borduren verder op de bestaande Future API en maakt een asynchroon, non-blocking event-driven programmeermodel mogelijk. Deze sessie geeft een inkijk in de Completable Future API en plaatst deze in de context van het toenemend gebruik en interesse voor asynchroniciteit en 'reactive programming'. De live-demo's demonstreren hoe een traditionele service met 'vanilla' Java EE 7 API's zoals JAX-RS en JSON wordt omgevormd tot een 'pipeline' van (parallel uitgevoerde) operaties.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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