SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
Reaktive Programmierung In Java.
Warum? Wie?
Alex Krause | cosee
alex.krause@cosee.biz | @alex0ptr
Worüber ich heute nicht rede 🤐…
message-driven
Reactive Manifesto
non-blocking I/O
reaktive Systeme
Skalierung
resilience
Actors
Effizienz
Worüber ich heute rede…
Was ist reaktive Programmierung?
Warum will ich das einsetzen?
Wie sieht das in der Praxis aus?
Was ist
Reaktive Programmierung? 🤔
Ganz am Anfang:
Functional Reactive Programming
Ganz am Anfang:
Functional Reactive Programming
🧐
🎓
Functional Reactive Programming
1. reaktive Produzenten
2. reaktive Deklaration
3. automatische Propagierung
Reactive Producers
Behaviours
‣ (zeit-)kontinuerlich sich ändernde Werte
‣ erzeugen Wertänderungen
Sequences (of Events)
‣ zeitdiskret, potentiell nicht endlich
‣ erzeugen Ereignisse
/ Signals
/ Events / Streams
Demo
Demo
Das tut mir jetzt mehr weh als euch! 😬
Dependency Graph
a = 1
b = 2
c = a + b
“a = 2”
=> “c == 4”
a b
c
⚙⚙
Was?
‣ “was” anstatt “wann”, “wie” (Reihenfolge, Abhängigkeiten)
‣ vereinfacht die Implementierung reaktiver Anwendungen
😃
💡
Warum will ich das einsetzen? 🤔
Alternativen:
Observer Pattern und Callbacks
Alternativen:
Observer Pattern und Callback-😈🔥
Maier and Odersky “Deprecating the Observer Pattern with Scala.React”
Beispiel: Linie Zeichnen
Seiteneffekte
Kapselung
Komposition
Resourcen Management
Separation of Concerns
Semantische Distanz
Uniformität
Abstraktion
Datenkonsistenz
var path: Path = null
val moveObserver = { (event: MouseEvent) =>
path.lineTo(event.position)
draw(path)
}
control.addMouseDownObserver { event =>
path = new Path(event.position)
control.addMouseMoveObserver(moveObserver)
}
control.addMouseUpObserver { event =>
control.removeMouseMoveObserver(moveObserver)
path.close()
draw(path)
}
Seiteneffekte
Kapselung
Komposition
Resourcen Management
Separation of Concerns
Semantische Distanz
Uniformität
Abstraktion
Datenkonsistenz
var path: Path = null
val moveObserver = { (event: MouseEvent) =>
path.lineTo(event.position)
draw(path)
}
control.addMouseDownObserver { event =>
path = new Path(event.position)
control.addMouseMoveObserver(moveObserver)
}
control.addMouseUpObserver { event =>
control.removeMouseMoveObserver(moveObserver)
path.close()
draw(path)
}
🤨
Datenkonsistenz
b c
d
a
Verständlichkeit.
Zeichen der Zeit
Zeichen der Zeit
‣ Backend, Mobile, Web, Desktop
Zeichen der Zeit
‣ Backend, Mobile, Web, Desktop
‣ Technology Radar: “ADOPT” ReactiveX
Zeichen der Zeit
‣ Backend, Mobile, Web, Desktop
‣ Technology Radar: “ADOPT” ReactiveX
‣ Java 9: JEP 266, Observable
Zeichen der Zeit
‣ Backend, Mobile, Web, Desktop
‣ Technology Radar: “ADOPT” ReactiveX
‣ Java 9: JEP 266, Observable
‣ Spring 5: Reactor + WebFlux
Wie setze ich das ein? 🤔
Theorie vs. Praxis
ReactiveX
😍
RxJava
RxJS
Rx.NET
RxScala
RxSwift
etc.
😍
Reactor
😍
Reactive Streams
“…is an initiative to provide a standard for asynchronous
stream processing with non-blocking backpressure.”
Reactive Streams
“…is an initiative to provide a standard for asynchronous
stream processing with non-blocking backpressure.”
Play Framework
MongoDB
Akka Streams
Ratpack
SpringReactor
RxJava
Slick
Vert.x
Cassandra
ElasticSearch
Redis
Reactive Streams
Backpressure
💪 💪
Backpressure
💪 😰
Backpressure
😴 ✋
😎4
🎊 Demo 🎉
Alex Krause | cosee GmbH
alex.krause@cosee.biz | @alex0ptr
> talks.cosee.biz
> blog.cosee.biz
> jobs.cosee.biz
Fragen?

Contenu connexe

Plus de QAware GmbH

"Mixed" Scrum-Teams – Die richtige Mischung macht's!
"Mixed" Scrum-Teams – Die richtige Mischung macht's!"Mixed" Scrum-Teams – Die richtige Mischung macht's!
"Mixed" Scrum-Teams – Die richtige Mischung macht's!
QAware GmbH
 
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
 Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See... Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
QAware GmbH
 

Plus de QAware GmbH (20)

50 Shades of K8s Autoscaling #JavaLand24.pdf
50 Shades of K8s Autoscaling #JavaLand24.pdf50 Shades of K8s Autoscaling #JavaLand24.pdf
50 Shades of K8s Autoscaling #JavaLand24.pdf
 
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
 
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN MainzFully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
 
Down the Ivory Tower towards Agile Architecture
Down the Ivory Tower towards Agile ArchitectureDown the Ivory Tower towards Agile Architecture
Down the Ivory Tower towards Agile Architecture
 
"Mixed" Scrum-Teams – Die richtige Mischung macht's!
"Mixed" Scrum-Teams – Die richtige Mischung macht's!"Mixed" Scrum-Teams – Die richtige Mischung macht's!
"Mixed" Scrum-Teams – Die richtige Mischung macht's!
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
 
Der Tod der Testpyramide? – Frontend-Testing mit Playwright
Der Tod der Testpyramide? – Frontend-Testing mit PlaywrightDer Tod der Testpyramide? – Frontend-Testing mit Playwright
Der Tod der Testpyramide? – Frontend-Testing mit Playwright
 
Was kommt nach den SPAs
Was kommt nach den SPAsWas kommt nach den SPAs
Was kommt nach den SPAs
 
Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo
 
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
 Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See... Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
 
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
 
Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.
Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.
Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.
 
Kubernetes with Cilium in AWS - Experience Report!
Kubernetes with Cilium in AWS - Experience Report!Kubernetes with Cilium in AWS - Experience Report!
Kubernetes with Cilium in AWS - Experience Report!
 
50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling
 
Kontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAP
Kontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAPKontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAP
Kontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAP
 
Service Mesh Pain & Gain. Experiences from a client project.
Service Mesh Pain & Gain. Experiences from a client project.Service Mesh Pain & Gain. Experiences from a client project.
Service Mesh Pain & Gain. Experiences from a client project.
 
50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling
 
Blue turns green! Approaches and technologies for sustainable K8s clusters.
Blue turns green! Approaches and technologies for sustainable K8s clusters.Blue turns green! Approaches and technologies for sustainable K8s clusters.
Blue turns green! Approaches and technologies for sustainable K8s clusters.
 
Per Anhalter zu Cloud Nativen API Gateways
Per Anhalter zu Cloud Nativen API GatewaysPer Anhalter zu Cloud Nativen API Gateways
Per Anhalter zu Cloud Nativen API Gateways
 
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
 

Reaktive Programmierung In Java. Warum? Wie?