Reactive and Asynchronous Java

 

Reaktive und asynchrone Applikation erfreuen sich wachsender Beliebtheit – aber wie ist der beste Weg, um diese zu bauen? Dieser Trainingskurs vermittelt Ihnen die neuesten Concurrency-Techniken zur Entwicklung modern Java-Applikationen. Mit dem Aufkommen von Microservices und Service Oriented Architectures wird asynchrone Concurrency immer kritischer im täglichen Entwicklungsprozess.

Zu Beginn des Trainings beleuchten wir die Unterschiede zwischen asynchroner und synchroner Programmierung. Im Anschluss vertiefen wir die Theorie, in dem wir ein Projekt mittels modernen Concurrency Techniken (z.B. Java8 CompletableFuture, Actors mittels Akku und reactive Streams mittels RxJava) überarbeiten. Dadurch lernen Sie die guten, die bösen und die hässlichen Seiten dieser Ansätze in Bezug auf Kompositionalität, Testbarkeit und Einfachheit.

 

Trainingsinhalte

Tag 1
Asynchronous vs Synchronous Programming
  • Servlets
  • Asynchronous Servlets (3.0) and Spring
  • Why use asynchronous communications?
  • Solving the C10K Problem and the Microservices Performance problem
  • Timeouts

Approaches to Concurrency
  • The Reactive Manifesto and Functional Reactive Programming
  • Models of Concurrency: Event Based, Promises, The Actor Model, Reactive Streams
  • The full stack - from application right down to the OS

Promises using CompletableFutures
  • What is a Promise?
  • Motivation
  • ExecutorService
  • Creation patterns
  • Composition patterns
  • Exception handling
  • Sequence patterns
Tag 2
The Actor Model with Akka
  • What is the Actor model?
  • Why and when would you use actors?
  • Using Akka
  • Testing actors
  • Recovering from exceptions
  • Integration patterns

Reactive Streams with RxJava
  • Introducing Reactive Streams
  • Connecting Reactive streams to databases and web sockets
  • Pull vs. Push models
  • Using RxJava
  • Java 9 Flow API
  • Alternative Reactive Stream Implementations
  • Threading and Back Pressure
X