Title: PowerPoint-Pr
17.2 Mobile Objekte (mobile objects, auch
Objektmigration, object migration)
bedeutet Objekt ist nicht an den Ort gebunden,
an dem es erzeugt wurde, kann dynamisch
verlagert werden. Warum? - Effizienz
(Alternative Replikation/Caching 7.3) -
Verfügbarkeit (z.B. beim Mobilrechnen) -
Verfügungsgewalt (Sicherheit) Achtung Nicht
Migration mit Kopieren verwechseln
! (allerdings enge technische Verwandtschaft)
2Klassifikation Steuerung der
Migration explizit implizit imperativ
deklarativ Migrationsabstraktion
passiv weak mobility Objekt ist während
der Migration aktiv strong mobility
3Allgemeine Probleme bei der Migration wenn
Objekt verlagert wird ? Aktiv oder nur
passiv? Synchronisation erforderlich? ?
Merkt es davon etwas, d.h. verhält es sich am
Zielort anders? ? Werden Objekte, auf die es
verweist, mitverlagert? ? . . . und wenn es
nichtverlagerbare Systemobjekte sind? ? Sind
Objekte nach mehrfacher Verlagerung schwerer
erreichbar?
47.2.1 Imperative Migration wird explizit durch
entsprechende Anweisung veranlaßt
Wünschenswert (nicht in RMI) Remote und
UnicastRemoteObject haben Operationen void
move(String url) void move(RemoteObject
ob) - bringen eine Kopie des Objekts nach url
bzw. zu ob (eingebettete Objekte werden wie in
7.1.5.3 behandelt) - ersetzen das Original
durch einen Vertreter, der sich auf die Kopie
bezieht
5Mobile Agenten mobile Objekte, die selbst
migrieren
nicht verwechseln mit Intelligenten Agenten für
verteiltes Problemlösen
this.move("//remote8300") verlagert das
Objekt und generiert am Zielort einen Thread,
der die Ausführung fortsetzt Variante void
move(String url, String op) beendet laufende
Operation des Objekts, verlagert das Objekt und
generiert am Zielort einen Thread, der die
Operation op ausführt, z.B. this.move("//marke
t.com", "trade")
6Information über mobile Agenten und einschlägige
Systeme http//www.davidreilly.com/topics/softw
are_agents/mobile_agents/ http//mole.informatik.
uni-stuttgart.de/mal/mal.html
77.2.2 Deklarative Migration
wird unterstützt durch spezielle Sprache mit
entsprechenden Konstrukten bzw. durch
deklarative Spracherweiterungen Annotationen
und entsprechenden Vorübersetzer 2
Beispiele ? Emerald (Univ. of Washington,
Seattle, 1983-86) http//www.diku.dk/ research-g
roups/distlab/Research/Internal/DistOOS/Emerald/
? Doorastha (FU Berlin, Markus Dahm)
http//www.inf.fu-berlin.de/dahm/doorastha/
8Emerald Zusätzliche Parametermechanismen bei
Fernaufrufen Call-by-move - Argument migriert
zum aufgerufenen Objekt server.op(move
arg) Call-by-visit - Argument migriert zum
aufgerufenen Objekt und zurück server.op(visit
arg) (! Nicht verwechseln mit
call-by-value-result !) Plattform Workstation
Cluster, Programmcode auf allen Stationen
repliziert
9Doorastha Java mit Annotationen lt ..... gt ,
ohne (sichtbaren) RMI-Code Klasse für
Fernobjekte ltglobalizablegt class Table
... Fernerzeugung Table t new ltremotenew
host...gt Table() Spezifikation von
call-by-move void op(ltby-movegt Table t)
... weitere Annotationen, auch für Attribute
von Objekten
107.2.3 Migrationsabstraktion
z.B. bei JavaParty Univ. Karlsruhe, Michael
Philippsen) http//wwwipd.ira.uka.de/JavaParty/
(lokal file/import/public/opt/JavaParty/doc/
features.html) minimal erweitertes Java für
hochgradige Verteilungsabstraktion zwecks
Parallelrechnen im Lokalnetz ohne (sichtbaren)
RMI-Code remote class X ... bewirkt, daß die
Objekte fernaufrufbar und mobil
sind Migration wird von intelligentem
Laufzeitsystem gesteuert (explizite Steuerung
ist ebenfalls möglich) Voraussetzung alle
Stationen sehen gemeinsames (verteiltes)
Dateisystem
11Benutzung von JavaParty 1. Übersetzen mit
JavaParty-Übersetzer jpc ltfilenamegt.java
z.B. jpc HelloJP.java mit public remote class
HelloJP public static void main(String arg)
System.out.println("Hello JavaParty!")
generiert diverse Klassen, einschließlich
Hilfs- und Stub-Klassen 2. JavaParty Runtime
Manager starten jprm
123. Eine oder mehrere JavaParty Virtual Machines
starten, z.B. auf verschiedenen Stationen,
aber so, daß die .class-Dateien erreichbar
sind jpvm Achtung jpvm sucht Kontakt
mit jprm per Rundruf Stationen sollten daher
im gleichen Subnetz sein 4. Programm so
starten, daß die .class-Dateien erreichbar sind,
z.B. jp HelloJP 5. Die mit jprm und jpvm
hochgezogene Plattform abräumen mit jprk (rk
wie remote kill)