Newsletter

   Kontakt

Reaktive Programmierung in Java

Reactive-Streams und RxJava

(3-tägiger iX-Workshop)

Die Reaktive Programmierung hat sich nicht erst seit dem Reactive-Manifesto von 2014 zu einer Schlüsseltechnologie für die Konzeption

nebenläufiger und verteilter Systeme entwickelt. Mit der Klasse Flow hat sich der Reactive-Streams Standard nun auch im JDK etabliert.

In diesem Seminar lernen Sie praxisnah und mit Blick auf Technologieauswahl und Architekturkonzeption die reaktive Programmierung kennen. Sie erschließen
sich die Konzepte und Regeln des Standards und Sie erlernen deren Anwendung in RxJava und anderen Implementierungen.

RxJava geht weit über den Reactive-Streams Standard hinaus und bietet eine umfangreiche Basis für den Bau reaktiver, nachrichtenbasierter,
nebenläufiger Systeme. Dabei wird insbesondere die Parallelität auf einem hohen Abstraktionsniveau realisiert, um deren Herausforderungen zu leicht handbarer zu machen. Sie lernen parallele und nebenläufige Programme mit RxJava so zu konzipieren, dass definierte Anforderungen hinsichtlich Performance und Skalierbarkeit erreicht werden, und Sie lernen was „unter der Haube“ geschieht, so dass Sie das gewünschte Nebenläufigkeitsverhalten gezielt herstellen können.

Sie vertiefen das Gelernte in vielen praktischen Übungsaufgaben.

Zielgruppe

- Entwickler und Architekten von Systemen, in denen folgende Aspekte relevant sind


o Nachrichtenbasierte Architektur

o Parallelität oder Asynchronität

o Verteilung

- Entwickler, die ein Interesse an modernenProgrammierkonzepten mit Blick auf Asynchronität und Perfomance haben

Voraussetzungen

  • Java Sprachverständis ist erforderlich.

Leistungen Ihres Workshoptickets

  • Workshopunterlagen
  • Tagungsgetränke & Verpflegung (Präsenzveranstaltung)
  • Teilnahmebescheinigung


Der Workshop ist auf 15 Teilnehmer begrenzt!

Durchführung

Ist die Durchführung der Veranstaltung aufgrund höherer Gewalt, wegen Verhinderung eines Referenten, wegen Störungen am Veranstaltungsort oder aufgrund zu geringer Teilnehmerzahl (weniger als 50%) nicht möglich, werden die Teilnehmer spätestens 14 Tage vorher durch das heise Events-Team informiert.

Kontakt

Haben Sie Fragen zu der Organisation oder der Veranstaltung? Gern beantworte ich Ihre Fragen per E-Mail!

Jennifer Rypalla // jery@heise.de

Termine & Preise

11. - 13.11.2020, Hannover

Heise Medien GmbH & Co. KG, Karl-Wiechert-Allee 10, 30625 Hannover

Tickets Hannover

Preise

Frühbucherpreis: 2.250,00 € *

Standardpreis: 2.475,00 € 

Alle Preise inkl. MwSt.

* 10% Frühbucherrabatt bis 6 Wochen vor Veranstaltungsbeginn

Agenda & Trainer

Programm Tag 1

  • 08:30 - 09:00 Uhr Registrierung

  • 09:00 - 13:00 Uhr Workshop

  • 13:00 - 13:45 Uhr Mittagspause

  • 13:45 - 17:00 Uhr Workshop

Programm Tag 2 & 3

  • 09:00 - 13:00 Uhr Workshop

  • 13:00 - 13:45 Uhr Mittagspause

  • 13:45 - 17:00 Uhr Workshop

Jeweils 15 Minuten Kaffeepause am Vormittag und am Nachmittag. Jeweils 60 MInuten Mittagspause von 12.30 Uhr bis 13:30 Uhr.

Inhalt

1 Grundlagen der Parallelität in Java

  • Technologieübersicht: Threads, ForkJoin Tasks, ParallelSteams, CompletableFuture
  • Parallelisierung von Algorithmen: Performance im Multi-Core
  • Gegenseitiger Ausschluss: Realisierung von Mutex in JVM und Betriebssystem


2 Java Thread Programmierung: Mächtig aber riskant

  • Java Thread API 
  1. Starten, joinen, Exceptionhandling
  2. Parallelisierung mit Threads: Performancesteigerung vs. Kosten und Risiken
  3. Threadpool und Future: Effiziente Thread-Nutzung, Use-Cases, Grenzen
  4. Architektur von Threads in der JVM und die Kooperation mit dem Betriebssystem

  • Synchronisation in Java
  1. Das synchronized Keyword: Implizite blockorientierte Synchronisation
  2. ReentrantLock, ReentrantReadWriteLock, Semaphore: Explizite Synchronisation
  3. CyclicBarrier, Phaser: Synchronisation komplexer Abläufe
  4. Risiken der Synchronisation: Deadlock und Data-Race
  • Monitor und Condition-Variable in Java
  1. Das Monitor Pattern: Realisierung von Producer-Consumer Szenarien
  2. wait() und notify(): Sprachintegrierter Monitor
  3. Condition: Explizite Monitor-Implementierung
  4. BlockingQueue: Gekapselter Monitor, einfache Realisierung von Producer-Consumer


3 Java Fork-Join Tasks: Effiziente, skalierbare Parallelität

  • User-Mode Work-Stealing Task-Scheduler: Löst Probleme der Thread Parallelität
  • ForkJoinTask API: Bäume für die Daten- und Taskparallelität
  • Parallelisierung rekursiver Algorithmen mit ForkJoinTasks
  • ForkJoinPool API: Optimierungsoptionen
  • CompletableFuture: API für Task-Parallelität
  • CountedCompleter: Basis für die Parallel-Streams
  • Architektur der Fork-Join Tasks im JDK


4 Parallel-Streams: Implizite Datenparallelität

  • Map-Reduce Pipeline ermöglicht automatische Parallelisierung
  1. Terminale und intermediäre Operatoinen: map(), reduce(), filter(), flatMap(), collect()
  2. Funktionale operationale Parameter: Zustandslos und seiteneffektfrei
  • Spliterator-API: Rekursive Partitionierung von Datenstrukturen
  1. Spliteratoren des JDK verstehen und nutzen
  2. Eigene Spliteratoren programmieren
  • Collector-API: Mutable Reduktion
  1. Anwendung der Standard-Collectoren: joining(), groupingBy(), mapping()
  2. Eigene Collectoren für spezielle Anforderungen programmieren
  • Architektur der Parallel-Streams im JDK auf Basis von ForkJoinTasks


5 Hardwarenahe Aspekte der Parallelität

  • Das Java Memory-Model
  1. Die „starke Garantie“ des JMM: Einfache Regel für deterministische Parallelität
  2. Definition und Semantik des JMM
  • Spinlocks und Atomare Instruktionen
  1. Realisierungsbasis für den gegenseitigen Ausschluss
  2. Effiziente Alternative zur Synchronisation


6 Parallele Architekturen

  • Wie wähle ich die richtige API für meinen Anwendungsfall aus?
  • Welche Architekturen haben sich in Multi-Core Projekten bewährt?

Marwan Abu-Khalil

Marwan Abu-Khalil ist Senior Software Architekt für parallele und verteilte Systeme im Forschungsbereich der Siemens AG. Er hält regelmäßig Konferenzvorträge und Seminare über Parallelisierung und ist Trainer für zertifizierte Softwarearchitekten der Siemens AG.