Parallele Programmierung in Java Hauptseminar Parallele Programmierung in Java Transparente verteilte Objekte Arnim Kreutzer
Einführung Inhalt Schluß Laufzeitumgebung Entfernte Klassen Einführung
Einführung Motivation Nachteile Sockets keine GC, entfernte Adressen / Methodenaufrufe, Data Marshaling Nachteile RMI Zusätzliche Exceptions, örtlich gebundene Objekte, keine Migration
Programmierumgebung für Cluster Applications Einführung Ziele Programmierumgebung für Cluster Applications Forschungsplattform
Einführung Grundlagen Studienarbeit von Matthias Zenger: „Transparente Objektverteilung in Java“ 1997 Java RMI / KARMI
Einführung Highlights Java-like multi-threaded Programmierung Javas Objektsemantik Entfernte Threads Dynamische Objektverteilung Explizite Plazierung von Objekten/Threads Synchronisation entfernter Objekte Optimierte Örtlichkeiten
Entfernte Klassen Aufteilung class B statischer Anteil nicht-statischer Anteil Class B_class Repräsentation des statischen Anteils von B Class B_impl Repräsentation des nicht- statischen Anteils von B
Entfernte Klassen Kompilieren JavaParty Code JavaParty Compiler JPC JavaParty Transformation Regulärer Javacompiler Pures Java mit RMI Ausdrücken Regulärer RMI Stub & Skeleton Generator Portable ByteCode
Entfernte Klassen Objekthierachie remote class B extends A implements C C B A Object Eingeführter Klassenmodifikator
Entfernte Klassen Entfernte Objekthierachie
Entfernte Klassen Generierte Klassen
Entfernte Klassen Synchronisation Problem: Keine maschinenübergreifende Threads Klasse für Signalobjekte und Monitorklasse Aktuell: Arbeit an transparente Synchronisation
Laufzeitsystem Struktur
Laufzeitumgebung Objektinstantiierung I Wie? Lokale Instantiierung Umzug auf Ziel-JVM Nachteil: teuer Instantiierung auf Ziel-JVM
Laufzeitumgebung Objektinstantiierung II B (T z) { ...getConstrObj („B“)._new (z); } Handle B_intf _new (T z) {... return new B_impl (z); Konstruktorobjekt B_impl (T z) ... Entferntes Objekt new B (x) Lokale JVM Entfernte JVM
Laufzeitumgebung Objektmigration 1. Signal von der Ziel JVM an Objekt, dass Umzug beginnen soll 2. Feststellung der Umzugsfähigkeit / Sperre setzen / Serialisieren 3. Erzeugung eines neuen Objekts (Kopie) aus serialisierter Form / Stubreferenz an noch aktuelles Objekt schicken 4. Das jetzt veraltete Objekt setzt einen Verweis auf neuen Stub
Schluß Zusammenfassung + Anforderungen gut umgesetzt - Inkonsistenzen bei der Migration - Sourcecode nicht gut dokumentiert
Installationsanleitung Schluß Informationen Dokumente JavaParty-HomePage: http://wwwipd.ira.uka.de/JavaParty/ Antworten Meine mail: kreutzer@jambit.com Downloads Installationsanleitung