pdf 1.967 kB - Praktische Informatik - Universität Siegen
pdf 1.967 kB - Praktische Informatik - Universität Siegen
pdf 1.967 kB - Praktische Informatik - Universität Siegen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
3.10 Datenaustausch<br />
KAPITEL 3. ENTWICKLUNG DES SYSTEMS<br />
In vorherigen Kapiteln wurde bereits erwähnt, dass die Hauptaufgabe des Systems die<br />
Durchführung von algorithmenbasierenden Experimenten und die Verwaltung derer Resultate<br />
zum Zwecke der Optimierung von Algorithmen ist. Es wurde zudem auch schon<br />
darauf eingegangen, dass eine Verbesserung bzw. Optimierung eines Algorithmus in der<br />
Regel eine Vielzahl von Testläufen mit verschiedenen Benchmarks und Konfigurationen<br />
benötigt. Die Anzahl dieser Testläufe bis hin zu einer möglichst optimalen Implementierung<br />
solcher Algorithmen bzw. der Ermittlung zufriedenstellender Einstellungen der<br />
Konfigurationen steigt dabei oft mit der Komplexität dieser Algorithmen. Das Programm<br />
soll deswegen den Benutzer nicht nur bei der Verwaltung und Ausführung der Experimente<br />
unterstützen, sondern ihm die Möglichkeit bieten, die benötigte Zeit zur Ausführung<br />
der erforderlichen Testläufe zu minimieren. 5 Dies soll dadurch erreicht werden, dass mehrere<br />
Testläufe gleichzeitig auf mehreren Rechnern ausgeführt werden können, welche die<br />
Resultate an das System senden. In diesem Kapitel soll nun diese Funktionalität detailliert<br />
erklärt werden. Zunächst sei erwähnt, dass der Austausch von Daten zwischen den<br />
einzelnen Rechnern auf der “Remote Method Invocation“-Funktionalität, die auch unter<br />
dem Akronym RMI bekannt ist, basiert. Zum besseren Verständnis des netzwerkbasierten<br />
Datenaustauschs des Systems soll zunächst die RMI-Funktionalität des JDK 5 grob<br />
beschrieben werden.<br />
RMI - Remote Method Invocation<br />
Bei der Entwicklung objektorientierter Java-Programme ist bekannt, dass man innerhalb<br />
eines Programms, welches in einer Java-Virtual-Machine (JVM) abläuft, die Methoden<br />
verschiedener Klassen aufrufen kann. Dafür benötigt man lediglich ein Objekt, das eine<br />
Instanz dieser Klasse darstellt. RMI bietet einen ähnlichen Zugriff auf Methoden verschiedener<br />
Klassen, jedoch über die Grenzen der JVM und sogar über Rechnergrenzen<br />
hinaus. Hierzu müssen ein Paar zusätzliche Vorbedingungen erfüllt werden. Eine Klasse,<br />
die eine oder mehrere remote ausführbarer Methoden zur Verfügung stellt, wird als<br />
Server-Klasse bezeichnet, die Instanzen dieser Klasse werden Server-Objekte genannt.<br />
Es ist zwingend notwendig, dass eine sogenannte Remote-Schnittstelle bereitgestellt<br />
wird, welche von der Server-Klasse implementiert wird. Diese Schnittstelle beschreibt<br />
die Methoden, die netzwerkweit ausgeführt werden können. Die Protokolle wie beispielsweise<br />
TCP/IP, die zur Datenübertragung über das Netzwerk benötigt werden, erstellt<br />
der RMICompiler (rmic). Zu diesem Zweck muss die Server-Klasse mit rmic compiliert<br />
werden, worauf automatisch eine so genannte Stub-Klasse erzeugt wird, die diese Kommunikationsprotokolle<br />
einbindet. Um Programme über das Netzwerk miteinander mittels<br />
RMI kommunizieren lassen zu können, ist es notwendig,dass ein zusätzliches Programm<br />
im Hintergrund ausgeführt wird - die RMI-Registry. Die RMI-Registry könnte man auch<br />
als Knotenpunkt bei der Kommunikation zwischen Server und Client bezeichnen. Das<br />
Programm hat die Aufgabe, auf die Anfragen von angemeldeten Clients, die über einen<br />
5 Mit “minimieren“ ist hier eine Verkürzung der Zeit gemeint. Es ist nicht garantiert, dass durch die<br />
Verwendung dieses Systems wirklich eine minimale Zeit zur Durchführung der Testläufe erreicht wird.<br />
25