Bewertung und Klassifikation aktueller Werkzeuge und Technologien für verteiltes Programmieren. Erlernen der Grundkonzepte verteilter Programmierung mit speziellem Fokus auf innovativen Space Based Computing (SBC) Technologien. Design von GRID, P2P und Blockchain basierten verteilten und skalierbaren Anwendungsarchitekturen. Vertiefende praktische Erfahrung mit Sprachanbindungen für Java. Erlernen von Spracherweiterungen für SBC: Allgemeine Einführung: Erweiterung einer Programmiersprache um SBC-basierende P2P Koordinationseigenschaften. SBC Application Programming Interface (sprachunabhängig). Coordination Design Patterns. Sprachanbindungen zu Java. Verteiltes Programmieren mit der Sprachanbindung Java im Detail. Anwendungsbeispiele. Design von GRID-Architekturen mit SBC.
Entwicklung des Internet Richtung Peer-to-Peer (P2P) und GRID Computing: Die 3. Generation des Internet wird P2P basiert sein. Echte P2P Technologien und Modelle. Kritische Betrachtungen. Vorteile von P2P gegenüber Client/Server Technologien. P2P-Einsatzszenarien im Enterprise Application Integration Bereich. Space Based Computing (SBC) Plattformen: Überblick und Grundkonzepte: Computernetze und P2P ermöglichen neue Anwendungsbereiche (mobile eCommerce, eCollaboration etc.) und stellen komplexe technische Herausforderungen an Software-EntwicklerInnen. Bedeutung von Middleware-Plattformen. Klassifikation von Technologien für verteiltes Programmieren: Internet Protokolle, Standards, Middleware, Frameworks. Message Passing versus SBC. Zuverlässige Kommunikation basierend auf gemeinsamen Objekten ("Virtual Shared Memory"). Software-Fehlertoleranz durch Replikation. Java Spaces & API. Extensible Virtual Shared Memory & API. Relevanz von SBC für GRID Computing und heutige Internet-Technologien. Bsp: P2P Datenbankreplikation. Praktische Erfahrung im Design und in der Erstellung von fehlertoleranten, verteilten P2P Anwendungen: Laborübung: Lösen von Aufgabenstellungen für ein verteiltes System Java: Concurrency Control, sichere Kommunikation, on/off-line Modus, Name-Services, event-basierte Notifikation, Skalierbarkeit und Caching. Didaktikkonzept: Die LV besteht aus einem Theorieteil mit einer schriftlichen Prüfung über den Vorlesungsstoff und einem praktischen Übungsteil. Die Laborübung wird in 2er-Gruppen absolviert und beinhaltet Programmieraufgaben, die mithilfe unterschiedlicher Middleware-Systeme gelöst werden sollen. Als Programmiersprachen stehen Java und C# zur Verfügung. Neben der eigentlichen Implementierung sollen die verwendeten Technologien auch miteinander verglichen und bewertet werden. Die Lösungen werden im Rahmen von Feedback- und Abgabeterminen präsentiert. Homepage: http://www.complang.tuwien.ac.at/eva/.
ECTS Breakdown:
6 ECTS = 150 Stunden
Stunden / Inhalt:
Für Vorbesprechungstermine, Vorlesungstermine, weitere Informationen siehe http://www.complang.tuwien.ac.at/eva.
Anmeldung
* Programmierkenntnisse in Java * Verteilte Systeme VO * Verteilte Systeme LU