SIGS DATACOM Fachinformationen für IT-Professionals

SOFTWARE MEETS BUSINESS:
Die Konferenz für Software-Architektur
03. - 07. Februar 2020, München

Sessionsdetails

Vortrag: Fr 2
Datum: Fr, 07.02.2020
Uhrzeit: 09:00 - 16:00
cart

Paradigmen moderner Parallelität in Java: “Through the Unknown to the Predictable”

Uhrzeit: 09:00 - 16:00
Vortrag: Fr 2

 

Nur eines wissen wir sicher über die Zukunft: Der Performancehunger der Digitalisierung wird eine stetig fortschreitende Parallelisierung erfordern. Wie aber wählen wir das richtige Parallelisierungsparadigma aus?
Im Tutorial sehen Sie in Java, wie drastisch sich moderne Parallelisierungstechnologien hinsichtlich Performance, Stabilität und Usability unterscheiden. Sie lernen praktisch, geeignete Technologien für Ihren spezifischen Use-Case auszuwählen, effizient damit zu programmieren und ein vorhersagbares Verhalten Ihrer parallelen Software sicherzustellen.

Bitte bringen Sie wenn möglich einen eigenen Computer mit aktuellem JDK mit (8 oder neuer). Da Übungsgruppen gebildet werden, ist die Teilnahme jedoch auch ohne eigenen Rechner möglich.

Um die Aufgaben bearbeiten zu können, muss auf dem Rechner ein Java JDK 8 oder neuer installiert sein, und es muss möglich sein das Zipfile mit dem Code herunterzuladen und zu entpacken.

Sie erhalten den Code als Zipfile unter folgendem Download-Link:

drive.google.com/open

Bitte laden Sie von dort die Datei SeminarParallelComputing_JAVA_CODE.zip herunter, entpacken diese und kompilieren den darin enthaltenen Java Code. Das Zipfile enthält auch ein passendes Eclipse Projektfile.
Als Test führen Sie bitte die folgende Klasse aus, sie schreibt endlos „Hello“ auf die Konsole: 
seminar.exercises.thread.parallel.hello_world_threads.base.HelloWorldThreadsBase

Maximale Teilnehmerzahl: 30

Zielpublikum: Architekten, Entwickler, Entscheider, die sich mit Parallelität und Performance beschäftigen wollen
Voraussetzungen: Grundlagen in einer beliebigen objektorientierten Sprache: Die Parallelisierungskonzepte sind allgemeingültig
Schwierigkeitsgrad: Fortgeschritten

Extended Abstract
„Into the Unknown“: Um ins Reich der Multi-Cores und Many-Cores vorzustoßen, brauche ich eine Parallelisierung, die sich selbst implizit optimiert, die mir ein einfaches API an die Hand gibt, und die sowohl mit meinen Anforderungen als auch mit der Hardware skaliert. Welche Paradigmen der Parallelität können das? Wie sind sie realisiert? Was sind ihre Risiken?
Die Java-Plattform führt uns das Ausmaß und das Tempo der Modernisierung im Bereich der Parallelität plastisch vor Augen, mit fast jedem Release finden weitere APIs für aktuelle Parallelisierungsparadigmen Eingang ins JDK. Am Beispiel dieser Parallel-APIs lernen Sie in diesem praxisorientierten Tutorial, die heute relevanten Paradigmen der Parallelität einzuschätzen und einzusetzen. Sie sehen, wie diese Technologien aufeinander aufbauen und welche nicht-funktionalen Eigenschaften sie voneinander unterscheiden. Auf dieser Basis erlernen Sie Kriterien für die Auswahl der optimalen Parallelisierungstechnologie für Ihren spezifischen Use-Case, und Sie üben, effizient damit zu programmieren.
Durch Übungsaufgaben in Java erfahren Sie praktisch, welche Charakteristika hinsichtlich Performance, Skalierbarkeit, Stabilität und Usability die verschiedenen Paradigmen ausmachen. So erarbeiten wir uns Antworten auf typische Fragen einer Parallelisierung, z.B.:

  • Warum sind Fork-Join-Task-Parallelisierungen stabiler als solche mit Threads?
  • Wann ist ein Parallel-Stream performanter als ein Task-Baum?
  • Was unterscheidet Task-Parallelität mit Completable-Future von Daten-Parallelität mit Streams?

Damit Sie den kompletten Software-/Hardware-Stack für die Parallelität verstehen und sein Verhalten einschätzen können, erhalten Sie einen tiefen Einblick in die Realisierungsstrategien für Parallelität innerhalb des JDK und die Kooperation der JVM mit dem Betriebssystem sowie in das Regelwerk des Java-Memory-Modells.
Auf dieser Basis diskutieren wir im Tutorial, mit welchen Architekturkonzepten Sie langfristig ein vorhersagbares Verhalten in Ihren spezifischen parallelen Software-Systemen sicherstellen können.
Das Tutorial ist nicht nur für Entwickler, Architekten und Entscheider in Java-Projekten geeignet, sondern ebenso für Teilnehmer mit einem Fokus auf C# oder C++. Zwar bieten diese Sprachen andere APIs an, die jedoch auf identischen Paradigmen basieren.
Am Ende des Tages haben wir alle Bausteine für eine Reise durch die Parallelität beisammen, die uns „From the Unknown to the Predictable“ führen wird.