Die Kertasarie VM wurde unter Berücksichtigung
der folgenden Ziele entwickelt:
 |
Java 2 Standard |
 |
Netzwerkzentrierung |
 |
Portabilität |
 |
Skalierbarkeit, |
 |
Integrierter Remote Debugger (Debugging laufender Applikationen
über das Netzwerk) |
 |
Eigenes GUI-System |
 |
Echtzeitfähigkeiten |

Netzwerkzentrierung
Im Gegensatz zu vielen anderen JVMs für eingebettete System
unterstützt die Kertasarie die Socketschnittstelle. Zudem werden
das volle Reflection-API und die Klassen zur generischen Objekt-Serialisierung
bereitgestellt. Das eröffnet die Möglichkeit, Middleware-Architekturen
wie RMI oder CORBA auch für eingebettete Systeme anbietenzu
können.
Portabilität
Die Kertasarie VM ist strikt ANSI-C konform, was die Portierung
auf andere Systeme erheblich vereinfacht. Der plattformspezifische
Code ist zudem stark gekapselt. Die Kertasarie VM implementiert
ihr eigenes Threading-Modell um die quasi-parallele Abarbeitung
von Java Threads zu ermöglichen (green threads Modell). Das
darunterliegende Betriebssystem muss demzufolge keine Threads bereitstellen,
was die Portierung weiter stark vereinfacht.

Skalierbarkeit
Die Skalierbarkeit der Kertasarie VM wird durch verschiedene Maßnahmen
erreicht. Es ist zur Compile-Zeit der virtuellen Maschine möglich,
bestimmte, nicht benötigte Funktionalitäten auszuschließen.
Das kann die Codegröße erheblich verringern. Zudem kann
die Größe einer Java Applikation wie auch das Java API
stark minimiert werden. Da in eingebetteten Systemen oft nur eine
einzige Applikation läuft, ist es möglich, das API entprechend
für die Applikatio anzupassen. Zu diesem Zweck existiert eine
Toolsuite, die für eine oder mehrere Applikationen das Java
API um nicht benötigte Methoden und Klassen bereinigt. Typischerweise
werden ca. 50% der Methoden aus dem API entfernt. In einem weiteren
Schritt kann dieses API in die internen Strukturen der Kertasarie
VM überführt werden. Dadurch ist es zum Einen möglich
den Classloader in der VM
einzusparen. Außerdem wird das API damit ROM-fähig, was
für viele eingebettete Systeme ein erheblicher Vorteil ist.

GUI
Bestehende GUI-Systeme für Java berücksichtigen selten
die beschränkten Ressourcen in eingebetten Systemen. Die Standard
Windowing-Toolkits wie AWT oder Swing sind viel zu groß für
eine Integration in limitierten Geräten wie PDAs. Insbesondere
sind die GUI-Komponenten (Buttons, Slider, Menüs etc.) viel
zu groß für die oft recht kleinen Displays.
Das GUI-System der Kertasarie VM ist verfügbar für Windows
CE, PalmOS und Linux/Unix. Es werden die vom Betriebssystem bereitgestellten
GUI-Controls verwendet. Daraus resultiert zum einem in ein relativ
kompaktes und schnelles System. Zudem ist ein weiterer Vorteil,
dass eine Java-Applikation unter Windows CE wie eine Windows CE
Applikation aussieht und benutzbar ist, auf dem Palm entsprechend
wie eine PalmOS Applikation.
Für die Unix/Linux-Implementierung wurde das GIMP Toolkit (GTK)
als Basis gewählt. GTK wurde ausgewählt, da es eine einfache
Anbindung an C-Programme ermöglicht und zudem in einer Framebuffer-Version
verfügbar ist. Das erlaubt eine einfache Portierung auf eingebettete
Systeme, die unter Linux laufen.
Ein weiterer wichtiger Vorteil der Linux-Implementierung ist, dass
ein einfaches und schnelles Rapid-Prototyping für die mobile
Geräte möglich ist.

Echtzeitfähigkeiten
Die Kertasarie VM implementiert ein striktes highest-priority-first
Scheduling-Verfahren. Um den Ausschluss der Abarbeitung von hoch
priorisierten Threads durch niedrig priorisierte zu vermeiden (priority
inversion), wurde in der Kertasarie VM das priority-inheritance-Verfahren
implementiert.