Parallele Programmierung in Java

Performante Multi-Core-Software für Edge, IoT und Server

In Zusammenarbeit mit der Gesellschaft für Informatik (GI)

Auf einen Blick

3 Tages-Seminar
27.04.2020 - 29.04.2020
9:00 Uhr
in Ostfildern bei Stuttgart

Technische Akademie Esslingen
An der Akademie 5
73760 Ostfildern

EUR 1.440,00(MwSt.-frei)

bis zu 70% Zuschuss möglich!

Veranstaltung Nr. 35405.00.002


Referent:
Dipl.-Math. M. Abu-Khalil
Siemens AG, Energy Management Division, Berlin

Veranstaltungsprogramm Parallele%20Programmierung%20in%20Java als PDF zum DownloadVeranstaltungsprogramm

Seminar weiterempfehlen

Inhouse-Training anfordern


Teilnehmer dieser Veranstaltung interessierten sich auch für

Beschreibung

Die Digitalisierung basiert auf der Vernetzung von Applikationen, die auf Edge- und IoT-Geräten realisiert werden. Die dafür nötige Performance kann nur durch die intelligente Nutzung von Multi-Core-CPUs erreicht werden. Die Sprache Java bietet eine Vielzahl von Technologien für die effiziente Multi-Core-Programmierung an und ist dadurch eine ideale Plattform für Anwendungen auch im Realtime- und Embedded-Bereich.

In diesem praxisorientierten Seminar wird die parallele Programmierung in Java von Grund auf erschlossen, Sie lernen mit den aktuellen APIs zu programmieren, und Sie sehen welche technologischen Paradigmen diesen jeweils zugrunde liegen. 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.

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 Fallstricke 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 und anhand der Flow API und ReactiveX lernen Sie die Programmierung von Reactive-Streams kennen.

Um das Verhalten Ihrer parallelen Programme genau zu verstehen, erhalten Sie einen tiefen Einblick in die Realisierung von Threads und Synchronisation im Zusammenspiel der Java VM mit dem unterliegenden Betriebssystem und der Hardware.

Ziel der Weiterbildung

> Parallelisierung von Software mit Java beherrschen
> Grundlagen und praktische Anwendung der Parallelen Programmierung beherrschen
> Java APIs für Parallele Programmierung anwenden und bewerten
> Threads, Fork-Join-Tasks, Parallel-Streams, Completable-Future, Flow und Reactive-Streams einsetzen
> Java-Memory-Model: deterministische Software für aktuelle Multicore-Hardware schreiben
> Java Realtime-Erweiterungen einsetzen
> Software-Architekturen für die Einführung von Multi-Core-CPUs in Embedded-Realtime-Systemen bewerten

Das Seminar ist interaktiv, die aktuellen Projekte der Teilnehmer werden thematisiert.

Der Praxistransfer wird durch zahlreiche Programmierübungen sichergestellt, zum Beispiel:
> Kosten und Risiken von Threads: Wie parallelisiere ich stabil und effizient?
> Algorithmen-Parallelisierung mit Threads (Quicksort, Matrix)
> Fork-Join-Tasks (Skalierbare Parallelität)
> Parallel-Streams (Datenpipelines)
> Reactive-Streams mit Flow und ReacviteX
> Completable-Future: Task-Parallelität
> Memory-Model (Sequential-Consistency)

Sie erhalten Qualität
Das Qualitätsmanagementsystem der Technischen Akademie Esslingen ist nach DIN EN ISO 9001 und AZAV zertifiziert.

Teilnehmerkreis

Das Seminar richtet sich an Entwickler, Architekten und Entscheider, die parallele Software mit Java entwickeln wollen. Es eignet sich auch für Nutzer anderer Programmiersprachen, da die Konzepte der Parellelität allgemeingültig erschlossen werden.

Inhalte

Montag, 27. bis Mittwoch, 29. April 2020
9:00 bis 12:15 und 13:45 bis 17:00 Uhr

1. Grundlagen der Parallelität in Java
1.1 Technologieübersicht: Threads, ForkJoin-Tasks, Parallel-Streams, Completable-Future
1.2 Parallelisierung von Algorithmen: Performance im Multi-Core
1.3 gegenseitiger Ausschluss: Realisierung von Mutex in JVM und Betriebssystem
1.4 Realtime-Java (RTSJ): die elegante Java-API für die Realtime Programmierung

2. Java Thread Programmierung: mächtig, aber riskant
2.1 Java Thread API
> Starten, joinen, Exceptionhandling
> Parallelisierung mit Threads: Performancesteigerung vs. Kosten und Risiken
> Threadpool und Future: effiziente Thread-Nutzung, Use-Cases, Grenzen
> Architektur von Threads in der JVM und die Kooperation mit dem Betriebssystem
2.2 Synchronisation in Java
> das synchronized Keyword: implizite blockorientierte Synchronisation
> ReentrantLock, ReentrantReadWriteLock, Semaphore: explizite Synchronisation
> CyclicBarrier, Phaser: Synchronisation komplexer Abläufe
> Risiken der Synchronisation: Deadlock und Data-Race
2.3 Monitor und Condition-Variable in Java
> Monitor Pattern: Realisierung von Producer-Consumer Szenarien
> wait() und notify(): sprachintegrierter Monitor
> Condition: explizite Monitor-Implementierung
> BlockingQueue: gekapselter Monitor, einfache Realisierung von Producer-Consumer
2.4 Realtime-Java
> Realtime-Java am Beispiel der AICAS Virtual Machine
> Parallele Programmierung in Realtime-Systemen: Vorgehensweisen und Risiken
> Scheduling-Strategien, Priority-Inversion und Priority-Inheritance

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 Task-Parallelität
> Parallelisierung rekursiver Algorithmen mit ForkJoin-Tasks
> ForkJoinPool API: Optimierungsoptionen
> CompletableFuture: API für Task-Parallelität
> CountedCompleter: Basis für die Parallel-Streams
> Architektur der ForkJoin-Tasks im JDK

4. Parallel-Streams: implizite Datenparallelität
4.1 Map-Reduce Pipeline ermöglicht automatische Parallelisierung
> terminale und intermediäre Operationen: map(), reduce(), filter(), flatMap(), collect()
> funktionale operationale Parameter: zustandslos und seiteneffektfrei
4.2 Spliterator-API: rekursive Partitionierung von Datenstrukturen
> Spliteratoren des JDK verstehen und nutzen
> eigene Spliteratoren programmieren
4.3 Collector-API: mutable Reduktion
> Anwendung der Standard-Collectoren: joining(), groupingBy(), mapping()
> eigene Collectoren für spezielle Anforderungen programmieren
4.4 Architektur der Parallel-Streams im JDK auf Basis von ForkJoin-Tasks

5. Reaktive Programmierung mit Flow, Reactive-Streams und ReactiveX
5.1 Das Reactive-Manifesto
5.2 Flow: die JDK API für Reactive-Streams
5.3 Der Reactive-Streams de Facto Standard
5.4 ReactiveX und RxJava: Eine umfangreiche Bibliothek für Reactive-Streams

6. Hardwarenahe Aspekte der Parallelität
6.1 Java Memory-Model
> die „starke Garantie“ des JMM: einfache Regel für deterministische Parallelität
> Definition und Semantik des JMM
6.2 Spinlocks und atomare Instruktionen
> Realisierungsbasis für den gegenseitigen Ausschluss
> effiziente Alternative zur Synchronisation

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

Referenten

Dipl.-Math. Marwan Abu-Khalil
Herr Abu-Khalil ist Software-Architekt für parallele und verteilte Systeme im Forschungsbereich der Siemens AG, Trainer für zertifizierte Software-Architekten und regelmäßiger Sprecher auf Konferenzen zur Parallelen Programmierung.,

Termine & Preise

Extras
Die Seminarteilnahme beinhaltet Verpflegung und ausführliche Seminarunterlagen.

Die Teilnehmerzahl ist begrenzt, um den optimalen Lernerfolg zu garantieren.

Kosten
Die Kosten betragen pro Teilnehmer EUR 1.440,00(MwSt.-frei), inklusive aller Extras.

Fördermöglichkeiten
Für diese Veranstaltung steht Ihnen die ESF-Fachkursförderung zur Verfügung.
Weitere Informationen

Die nächsten Termine

Datum / Uhrzeit Seminartitel Ort Preis
27.04.2020, 9:00 Uhr Parallele Programmierung in Java Ostfildern$$ortdetail$$ EUR 1.440,00

© Technische Akademie Esslingen e.V., An der Akademie 5, 73760 Ostfildern  | Impressum