Schulung: Parallele Programmierung in Java
Technologieübersicht und Architekturkonzeption
- Die Java Technologien für Parallelität kennen und bewerten können
- Programmierung der wichtigsten Parallel APIs in Java in Grundzügen beherrschen
- Chancen und Fallstricke der parallelen Programmierung kennen
In diesem praxisorientierten Seminar wird die parallele Programmierung in Java von Grund auf erschlossen. Sie werden dadurch in die Lage versetzt, effiziente, deterministische parallele Programme in Java eigenständig zu entwerfen, und Sie lernen, die richtigen Technologien und Architekturen für Ihren Anwendungsfall auszuwählen.
Im Laufe der Jahre sind stetig neue parallele APIs ins JDK aufgenommen worden. Sie lernen im Seminar alle wichtigen APIs für die Parallelität in Java kennen, und Sie verstehen im Detail, welche technologischen Paradigmen diesen jeweils zugrunde liegen.
Sie programmieren im Seminar zahlreiche Übungen, um die Tricks und Schwierigkeiten der Parallelität praktisch zu erfahren. So sehen Sie, wie man mit Threads Algorithmen beschleunigt und lernen dabei auch die Gefahren einer unüberlegten Parallelisierung kennen. Sie Setzen Fork-Join-Tasks ein und erkennen an konkreten Beispielen, wo diese den klassischen Threads überlegen sind. Mit Java Parallel-Streams lernen Sie ein elegantes API für die transparente parallele Datenverarbeitung einzusetzen.
Virtual Threads sind der neue Ansatz im JDK, um hochskalierbare Systeme zu bauen. Sie sehen, was Sie bei einem Umstieg von klassischen Platform-Threads auf Virtual-Threads beachten müssen, welche Chancen damit verbunden sind, und wo Fallstricke zu beachten sind.
Mit Reactive-Streams lassen sich verteilte Systeme mit weitgehend transparenter Parallelität und automatischer Flusskontrolle konzipieren, Sie lernen die Grundkonzepte und den Einsatz kennen.
SIMD Instructions und GPU-Parallelisierung sind hardwarespezifische Ansätze, die insbesondere vor dem Hintergrund des KI Booms nun auch in Java Verbreitung finden, sie lernen diese einzuschätzen und anzuwenden.
Grundlagen der Parallelität in Java
- Technologieübersicht
- Parallelisierung von Algorithmen
- Performance im Multi-Core
Java Thread Programmierung: Mächtig aber riskant
- Java Thread API: Parallelität und Performance
- Synchronisation: Implizit und explizit
- Monitor und Condition-Variable: Producer-Consumer Szenarien
Virtual-Threads: Skalierbarkeit für Server-Software
- Programmiermodell
- Performance und Skalierbarkeit: Blocking Calls Handling
- Voraussetzungen in der Anwendungsarchitektur
Java Fork-Join Tasks: Rekursive Parallelität
- User-Mode Work-Stealing Task-Scheduler: Löst Probleme der Thread Parallelität
- Parallelisierung rekursiver Algorithmen
Parallel-Streams: Implizite Datenparallelität
- Map-Reduce Pipeline ermöglicht automatische Parallelisierung
- Spliterator-API: Rekursive Partitionierung von Datenstrukturen
Reactive Streams: Verteilte Systeme mit non blocking Backpressure
- Der Reactive Streams Standard und das Reactive Manifesto
- Streams aufbauen, verzweigen, zusammenführen
Hardwarespezifische Parallelität
- SIMD-Instructions mit der Project Panama Vector API
Das Java Memory-Model
- Speicherzugriffe und Programmsemantik
- Spinlocks und Atomare-Instruktionen
Parallele Architekturen
- Wie wähle ich das richtige API für meinen Anwendungsfall aus?
- Welche Architekturen haben sich in Multi-Core Projekten bewährt?
Der Kurs richtet sich an:
- Entwickler:innen, Architekt:innen, Entscheider:innen, die ihre Systeme parallelisieren oder vorhandene Parallelisierungen optimieren möchten
- Das Seminar ist sowohl für erfahrene Parallelisierer:innen als auch für Anfänger:innen in der Parallelität geeignet. Das Thema wird von Grund auf erschlossen und wir arbeiten uns bis in tiefliegende Fragestellungen vor
- Das Seminar eignet sich auch für Entwickler:innen, die in anderen Sprachen als Java arbeiten. Die Konzepte der Parallelität finden sich in den meisten modernen Sprachen in ähnlicher weise wieder
Grundkenntnisse in einer objektorientierten Programmiersprache.
Mindestanzahl Teilnehmende: 2 Personen