14.01.2015 Aufrufe

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

5.4 E<strong>in</strong>e JVM als Baukasten<br />

Codes zu beschleunigen. In diesem Fall ist die Nutzung e<strong>in</strong>es Kompilierungsdienstes nur e<strong>in</strong>geschränkt<br />

s<strong>in</strong>nvoll, da durch den zeitaufwendigen Aufruf des Dienstes der Geschw<strong>in</strong>digkeitsgew<strong>in</strong>n gegenüber<br />

der re<strong>in</strong>en Interpretation zunichtegemacht wird [PLDM02].<br />

Für Systeme, welche die Anwendung vor der Ausführung übersetzen, ist e<strong>in</strong> Kompilierungsdienst<br />

aber gut e<strong>in</strong>setzbar, da die Zeit des Übersetzens häufig weniger ausschlaggebend ist. Der Compiler<br />

wird nur <strong>in</strong> der Startphase der Anwendung benötigt; zur Laufzeit ist auf dem Gerät nur der übersetzte<br />

Code vorhanden. Solche Systeme werden häufig für Anwendungen verwendet, die sich zur Laufzeit<br />

nicht mehr verändern. Somit benötigen sie weder Compiler noch Interpreter vor Ort und s<strong>in</strong>d deutlich<br />

kle<strong>in</strong>er.<br />

5.4.8 Klassenverwaltung<br />

Die Klassenverwaltung ist für das Verwalten der Klassen- und Typdaten zuständig. Sie stellt unter<br />

anderem Schnittstellen zur Verfügung, um die vorhandenen Klassendaten abzufragen.<br />

5.4.8.1 Klassenlayoutverwaltung<br />

Die Klassenlayoutverwaltung entspricht der Objektlayoutverwaltung, jedoch für Klassen. Def<strong>in</strong>iert e<strong>in</strong>e<br />

Klasse statische Variablen (sogenannte Klassenvariablen), dann müssen diese im Speicher abgelegt<br />

werden. Die Klassenlayoutverwaltung legt die Struktur dieses Speicherbereichs fest: Sie bildet somit<br />

die Struktur<strong>in</strong>formationen e<strong>in</strong>er Klasse auf e<strong>in</strong>en Speicherbereich ab.<br />

Abbildung 5.18: Abhängigkeiten der Klassenlayoutverwaltung<br />

Die Klassenlayoutverwaltung wird von allen Bauste<strong>in</strong>en verwendet, welche die Speicherstelle e<strong>in</strong>er<br />

Klassenvariablen benötigen. Das ist vor allem die Ausführungse<strong>in</strong>heit oder der Compiler, wenn Zugriffe<br />

der Anwendung umgesetzt werden. Außerdem muss die Speicherbere<strong>in</strong>igung die Klassenvariablen<br />

untersuchen, um Referenzen auf andere Objekte zu erkennen. Die Abbildung der Struktur e<strong>in</strong>er Klasse<br />

auf e<strong>in</strong>en Speicherbereich ist allerd<strong>in</strong>gs aus Effizienzgründen häufig implizit gegeben und <strong>in</strong> die<br />

Implementierung anderer Bauste<strong>in</strong>e <strong>in</strong>tegriert.<br />

5.4.8.2 Typüberprüfung<br />

Die Typüberprüfung gleicht den Typ e<strong>in</strong>es Objekts mit e<strong>in</strong>em gegebenen Typ ab. Hat das Objekt e<strong>in</strong>en<br />

kompatiblen Typ, so ist die Typprüfung erfolgreich. Die Typprüfung stellt somit e<strong>in</strong>e Schnittstelle zur<br />

Typhierarchie dar.<br />

Die Typüberprüfung wird bei allen auftretenden Typvergleichen verwendet, beispielsweise wenn e<strong>in</strong>e<br />

Anwendung explizit e<strong>in</strong>en Typ prüft (mittels <strong>in</strong>stanceof) oder wenn e<strong>in</strong>e Umwandlungsoperation<br />

(Cast-Operation) zur Laufzeit durchgeführt werden soll.<br />

Unter der Annahme, dass ke<strong>in</strong>e Klassen zur Laufzeit nachgeladen werden, kann die Typhierarchie<br />

und damit auch die Typprüfung optimiert werden. An e<strong>in</strong>igen Stellen ist dann sogar überhaupt ke<strong>in</strong>e<br />

121

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!