06.10.2013 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!