Projektstudium SS98 - distributed computing


vorherige Seite Inhalt nächste Seite

3. Java RMI – Spezifikation

Einleitung

Anwendungen in verteilten Systemen die in verschiedenen Adressräumen laufen (Java-Programme --> eigene VM), also unabhängig voneinander, auch auf verschiedenen Hostumgebungen, müssen untereinander kommunizieren. Ein einfacher Mechanismus in Java ist hier die Socketprogrammierung, sie ist flexibel und ausreichend für eine normale Kommunikation. Jedoch müssen sich hier Client und Server um die Ver- und Entschlüsselung der Nachrichten für den Datenaustausch kümmern, die Entwicklung solcher Protokolle kann beschwerlich werden und sehr fehleranfällig sein. Außerdem wird dadurch die Objektorientierung verhindert. Durch Einsatz von Fremdprogrammen bei der Kommunikationsschnittstelle kann die Prozessorunabhängigkeit verloren gehen.

Eine Alternative zu den Sockets sind Remote Procedure Calls (RPC), diese abstrahieren die Kommunikationschnittstelle auf unterer Ebene auf den Level eines einfachen Prozeduraufrufs. D.h. anstatt mit den Sockets zu arbeiten, braucht der Programmierer nur eine Prozedur aufrufen, als ob es eine lokale Prozedur wäre; tatsächlich werden die Argumente dieses Aufrufs automatisch an das entfernte Ziel dieses Aufrufs geschickt. Die meisten RPC-Systeme benutzen für die Argumente und die Rückgabewerte zum verschicken eine externe Datendarstellung.

Aber RPC paßt nicht gut mit verteilten Objekten zusammen, da dort eine Kommunikation der Objekte zwischen verschiedenen Adressräumen benötigt wird, außerdem arbeitet RPC nicht mit Objekten zusammen. In Anlehnung des Methodenaufrufs bei lokalen Objekten, nennt man bei verteilten Objekten entfernten Methodenaufruf (remote method invocation), dabei übernimmt ein lokales Stellvertreter-Objekt den Aufruf des entfernten Objekts.

Java RMI wurde nun genau für die Arbeit mit der Java-Umgebung entwickelt, d.h. es fügt sich nahtlos in diese ein, während andere RMI-Systeme auf die Integration vieler Programmiersprachen bedacht sind, also teilweise Kompromisse geschlossen werden müssen. Java RMI kann alle Vorteile (und auch Nachteile) der JVM nutzen.

Motivation/Ziele:

Basierend auf diesen Zielen ist eine Anforderung die Einfachheit der Benutzung sowie die gute Anpassung an die Java-Sprache.

Zusätzlich sollte das RMI System Erweiterungen wie die garbage collection von entfernten Objekten, Server Abbildung und die Aktivierung beständiger Objekte um Aufrufe zu versorgen, unterstützen. Diese Erweiterungen sollten unsichtbar für den Anwender geschehen und nur einen minimalen Programmierungsaufwand erfordern.

Für diese Erweiterungen sollte das System folgendes unterstützen:
  • Mehrere Aufruf-Mechanismen, z.B. einfache Aufrufe für einzelne Objekte oder Aufrufe für Objekte die an mehreren Orten instanziert werden sollen.
  • Verschiedene Referenzsemantiken für entfernte Objekte, wie live references, persistent references oder lazy activation.
  • Sicherheit, die durch den SecurityManager und ClassLoader gewährleistet wird.
  • Entfernte garbage collection aktiver Objekte.
  • Die Fähigkeit, mehrere Transportarten zu unterstützen.

vorherige Seite Inhalt nach oben nächste Seite
© Copyright 1998 André Möller, Oliver Mentz & Magnus Wiencke