reaktive programmierung - java-forum-stuttgart.de · einführung synchron / asynchron spezifikation...

18
Juli 2018 - Torsten Kohn Java Forum Stuttgart Reaktive Programmierung mit Spring Boot und Project Reactor

Upload: trinhtruc

Post on 17-Sep-2018

229 views

Category:

Documents


0 download

TRANSCRIPT

Torsten Kohn

| Java, JavaScript, TypeScript

| Spring Boot, Angular, React

| Git, Maven, Gradle, Jenkins, Nexus, Sonar

Software Engineer bei der Comsysto Reply GmbH in München

Juli 2018 - Torsten Kohn Java Forum Stuttgart

Inhalt

Einführung

synchron / asynchron

Spezifikation

Interfaces Spring Boot & Reactor

Implementierungen

Java 9 Flow API

Technologien

Demo

Was ist Reaktive Programmierung?

Reaktive Programmierung fokussiert sich auf Datenflüsse und die Verbreitung von Änderungen.Stichwort: Backpressure oder Push vs Pull

| Programmierparadigma

| Pionierarbeit: Reactive Extentions (Rx) für .NET

| Standardisierung für RVM durch Reactive Streams

synchron

blockiert I/Overschwendet Ressourcen

kostenintensivkompliziert

vs asynchron

einfache Implementierung

Reactive Streams - Spezifikation

The purpose of Reactive Streams is to provide a standard for asynchronous stream processing with non-blocking backpressure.

Quelle: Reactive Streams

SpezifikationJava-APITechnology-Compatibility-KitBeispiel-Implementierungen

Collaboration von verschiedenen Entwicklern von folgenden Unternehmen:

Lightbend TwitterRed Hat

PivotalNetflixKaazing

Publisher package org.reactivestreams;

public interface Publisher<T> {

public void subscribe(

Subscriber<? super T> s);

}

package org.reactivestreams;

public interface Subscriber<T> {

public void onSubscribe(Subscription s);

public void onNext(T t);

public void onError(Throwable t);

public void onComplete();

}

Subscriber

package org.reactivestreams;

public interface Subscription {

public void request(long n);

public void cancel();

}

Subscription

package org.reactivestreams;

public interface Processor<T, R>

extends Subscriber<T>, Publisher<R> {

}

Processor

Juli 2018 - Torsten Kohn Java Forum Stuttgart

Implementierungen

RxJava 2

Project Reactor Akka Stream

Slick Cyclops

Vert.x

Java 9 Flow API

● keine Implementierung

● keine Spezifikation

● keine Tests zum Validieren der eigenen Implementierung

Spring Boot &Project Reactor

Unterstützte Technologien

Container

● Tomcat

● Jetty

● Netty

● Undertow

Datenbanken

● MongoDB

● Apache Cassandra

● Redis

● CouchDB

Demo