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 Kontroll- und Verwaltungsschicht<br />

E<strong>in</strong> System auf Basis dieses Ansatzes ist SUNs ursprüngliches EmbeddedJava. Es wurde jedoch<br />

durch J2ME ersetzt und wird heute nicht mehr von SUN unterstützt 3 . Die Anwendung wird hierbei<br />

gegen das JDK 1.1.7 entwickelt. Anschließend wird analysiert, welche Klassen und Felder von der<br />

Anwendung benutzt werden (JavaFilter), um daraufh<strong>in</strong> die Klassenbibliothek auf den benötigten<br />

Umfang zu reduzieren (JavaCodeCompact). Dabei werden die Klassen vorab geladen, das heißt, die<br />

Datenstrukturen zur Verwaltung der Klassen werden erstellt und <strong>in</strong> C-Code ausgegeben. Anschließend<br />

können die Dateien übersetzt und zusammen mit Unterstützungsbibliotheken und e<strong>in</strong>em Betriebssystem<br />

zu e<strong>in</strong>em Speicherabbild für den Mikrocontroller gebunden werden.<br />

E<strong>in</strong> anderes Beispiel ist der VM-Baukasten VM* [KP05b]. Hier liegt die JVM <strong>in</strong> Komponenten vor,<br />

aus denen, nach der Analyse der Anwendung, e<strong>in</strong>e optimale Auswahl getroffen wird.<br />

Als letztes Beispiel ist KESO zu nennen [WSSP07]. Bei KESO wird der Java-Bytecode <strong>in</strong> C-Code<br />

übersetzt und dieser dann mit e<strong>in</strong>er konfigurierbaren Betriebssystembibliothek (zum Beispiel OSEK)<br />

zusammengebunden. Im Rahmen des Übersetzens wird die Anwendung analysiert und anwendungsspezifisch<br />

um Code erweitert, der die Eigenschaften der JVM herstellt. So werden beispielsweise<br />

Typprüfungen und Überprüfungen von Feldgrenzen direkt <strong>in</strong> den entstehenden Code e<strong>in</strong>gefügt. Außerdem<br />

werden die Verwaltungsstrukturen anwendungsspezifisch erzeugt, wie beispielsweise e<strong>in</strong>e<br />

optimale Repräsentation der Typhierarchie.<br />

Vorteil des anwendungsspezifischen Anpassens ist, dass ke<strong>in</strong>e unnötigen Dienste angeboten werden.<br />

Durch die Optimierung kann Speicherplatz e<strong>in</strong>gespart werden, ohne die Anwendung zu beschränken.<br />

Zu beachten ist allerd<strong>in</strong>gs, dass bei diesem Ansatz die dynamischen Eigenschaften der JVM verloren<br />

gehen. Im Speziellen wird das dynamische Nachladen von Klassen nicht unterstützt, da neue Klassen<br />

Dienste benötigen könnten, die durch die anwendungsspezifische Anpassung entfernt wurden. Für<br />

Anwendungen, die auf solche dynamischen Eigenschaften angewiesen s<strong>in</strong>d, kann somit dieser Ansatz<br />

nicht e<strong>in</strong>gesetzt werden.<br />

5.3.3 Dynamisch anwendungsspezifisch angepasste Laufzeitumgebung<br />

Die beiden vorgestellten Ansätze, e<strong>in</strong>e Java-VM auf e<strong>in</strong>em kle<strong>in</strong>en Knoten zur Verfügung zu stellen, haben<br />

beide den Nachteil, dass die angebotene Funktionalität e<strong>in</strong>geschränkt und von Anfang an festgelegt<br />

ist. Mithilfe e<strong>in</strong>es Verwalters kann man auf die vorgestellten Ansätze aufbauen, ihre Vorteile nutzen und<br />

gleichzeitig durch dynamische <strong>Adaption</strong> den vollen Funktionsumfang e<strong>in</strong>er JVM zur Verfügung stellen.<br />

Man verfolgt denselben grundsätzlichen Ansatz e<strong>in</strong>er anwendungsspezifischen Laufzeitumgebung,<br />

ist jedoch nicht auf die e<strong>in</strong>malige Anpassung beschränkt, sondern kann sie wiederholen, falls es zur<br />

Laufzeit notwendig wird. Man erhält e<strong>in</strong>e dynamisch der Anwendung angepasste JVM, die Dienste<br />

nachträglich <strong>in</strong> die Laufzeitumgebung <strong>in</strong>tegriert, sobald sie benötigt werden. Zusätzlich kann man<br />

optimierte Varianten der Dienste verwenden, die dynamisch gewechselt werden, sobald sie nicht mehr<br />

den Anforderungen genügen. Die e<strong>in</strong>gesparten Ressourcen können der Anwendung zur Verfügung<br />

gestellt werden.<br />

Da das H<strong>in</strong>zufügen von Diensten und das Ersetzen von speziellen Varianten durch allgeme<strong>in</strong>ere<br />

zu e<strong>in</strong>em höheren Speicherbedarf führt, kann e<strong>in</strong> Punkt erreicht werden, an dem der Speicher nicht<br />

mehr ausreicht, um alle benötigten Dienste gleichzeitig lokal zur Verfügung zu stellen. Dann kann der<br />

Verwalter Komponenten parken oder als entfernten Dienst anbieten.<br />

3 Die Bezeichnung EmbeddedJava wird heute von SUN für andere Produkte verwendet. Informationen über das ursprüngliche<br />

EmbeddedJava f<strong>in</strong>den sich kaum noch. E<strong>in</strong>e Übersichtsseite ist jedoch noch im Internetarchiv “Wayback<br />

Mach<strong>in</strong>e” enthalten: http://web.archive.org/web/20040813044332/http://java.sun.com/<br />

products/embeddedjava/overview.html<br />

106

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!