reaktive programmierung - java-forum-stuttgart.de · einführung synchron / asynchron spezifikation...
TRANSCRIPT
Juli 2018 - Torsten Kohn Java Forum Stuttgart
Reaktive Programmierungmit Spring Boot und Project Reactor
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
RxJava vs Reactor
Java 9 Flow API
● keine Implementierung
● keine Spezifikation
● keine Tests zum Validieren der eigenen Implementierung
Unterstützte Technologien
Container
● Tomcat
● Jetty
● Netty
● Undertow
Datenbanken
● MongoDB
● Apache Cassandra
● Redis
● CouchDB