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

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

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

müssen. Ob die Anwendung dynamisches Laden von Klassen e<strong>in</strong>setzt, kann durch Analyse des Codes<br />

festgestellt werden.<br />

Da e<strong>in</strong>e laufende Anwendung im Normalfall selten zusätzliche Klassen benötigt, bietet sich das<br />

Auslagern des Klassenladers an. Lediglich zur Startzeit werden viele Klassen neu <strong>in</strong> die VM geladen.<br />

Aber auch hier kann e<strong>in</strong> externer Klassenlader s<strong>in</strong>nvoll se<strong>in</strong>. Speziell dann, wenn die Klassendaten<br />

nicht lokal vorliegen, sondern erst zum Knoten übertragen werden müssen. Durch externes Ausführen<br />

des Klassenladers entfällt das Laden und Analysieren der Klassendaten vor Ort. Stattdessen können<br />

direkt die vorbereiteten Datenstrukturen zum Gerät übertragen werden.<br />

Ist die Laufzeitumgebung aus optimierten Bauste<strong>in</strong>en aufgebaut, so muss der Verwalter ohneh<strong>in</strong><br />

darüber <strong>in</strong>formiert werden, dass dem System neuer Code und neue Typen h<strong>in</strong>zugefügt werden. Der<br />

Verwalter kann dann die Voraussetzungen der optimierten Bauste<strong>in</strong>e überprüfen und sie gegebenenfalls<br />

durch andere Varianten ersetzen, die unter den neuen Gegebenheiten optimal arbeiten.<br />

5.4.7.2 Verifier<br />

Der Verifier prüft, ob e<strong>in</strong>e geladene Klasse die JVM-Spezifikation [LY99] erfüllt. Dabei wird zum<br />

Beispiel geprüft, ob alle Befehle gültig s<strong>in</strong>d und ob das Ziel e<strong>in</strong>es Sprungbefehls der Anfang und nicht<br />

die Mitte e<strong>in</strong>es anderen Befehls ist. Neben vielen weiteren Überprüfungen ist besonders die Typprüfung<br />

wichtig. Dabei wird festgestellt, dass für jede Operation der Typ der Daten zu der darauf angewandten<br />

Operation passt.<br />

Abbildung 5.15: Abhängigkeiten des Verifiers<br />

Der Verifier wird vom Klassenlader nach dem Laden der b<strong>in</strong>ären Klassendef<strong>in</strong>ition aufgerufen. Erst<br />

wenn die Klasse erfolgreich überprüft wurde, fährt der Klassenlader mit dem Installieren der Klasse<br />

fort.<br />

Der Verifier ist hauptsächlich von den konstanten Klassendaten abhängig. Er kann daher gut als<br />

externer Dienst angeboten und separat vor dem Laden aktiviert werden. Das Auslagern des Verifiers<br />

zusammen mit dem Klassenlader ist besonders s<strong>in</strong>nvoll, da dann die gesamte Vorverarbeitung am<br />

Verwalter durchgeführt werden kann.<br />

5.4.7.3 B<strong>in</strong>der<br />

Beim B<strong>in</strong>den werden die symbolischen Referenzen <strong>in</strong>nerhalb e<strong>in</strong>er Klassendef<strong>in</strong>ition aufgelöst. Symbolische<br />

Referenzen s<strong>in</strong>d zum Beispiel Referenzen auf Typen bei der Def<strong>in</strong>ition von Feldern oder<br />

der Name von Methoden bei Methodenaufrufen. Werden während des B<strong>in</strong>dens Klassen oder Typen<br />

referenziert, die noch nicht geladen s<strong>in</strong>d, so wird der Klassenlader beauftragt, diese Klassen zu laden.<br />

119

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!