-
Die
Erfindung betrifft ein mobiles Endgerät, das eine Mehrzahl von Applikationen
abarbeiten kann, die unterschiedliche virtuelle Maschinen benötigen. Die
Erfindung betrifft auch ein Verfahren zum Abarbeiten einer Mehrzahl
von Applikationen, die je verschiedenen Softwareplattformen zugehören.
-
Applikationen
(Anwendungen) sind Computerprogramme, also z. B. Spiele oder Businessapplikationen,
welche auf ein mobiles Endgerät
wie etwa ein Mobiltelefon oder einen PDA (Personal Digital Assistent),
ein Autonavigationssystem et cetera geladen werden können und
dort abgearbeitet werden können.
-
Applikationen
können
für verschiedene
virtuelle Maschinen auf mobilen Endgeräten geschrieben sein, beispielsweise
für Java
oder .NET. Die Softwareapplikation erzeugt einen Bytecode, welcher maschinenunabhängig ist.
Um die Applikation auf einem mobilen Endgerät ablaufen zu lassen, bedarf
es einer virtuellen Maschine (eines Interpreters), welche den Bytecode
versteht und ihn in Maschinensteuerbefehle umwandeln kann.
-
Jede
virtuelle Maschine gehört
zu einer zugehörigen
Softwareplattform.
-
Auf
mobilen Endgeräten
wie etwa Mobiltelefonen ist der Speicherplatz begrenzt. Eine virtuelle Maschine
braucht bis zu mehreren MByte an statischem Speicherplatz. Selten
steht in einem Mobiltelefon Speicherplatz für mehr als eine virtuelle Maschine
zur Verfügung.
Mobiltelefone sind also in ihren Anwendungen auf Applikationen bestimmter
Softwareplattformen beschränkt,
also beispielsweise auf Applikationen nur für Java oder Applikationen nur
für .NET.
Zukünftige
Geräte
mit besserer Ressourcen-Ausstattung, deren Entwicklung abzusehen
ist, bieten die Möglichkeiten,
mehrere virtuelle Maschinen zu beinhalten (so wie dies heute auf
PCs der Fall ist), doch bleibt eine solche Implementierung ineffektiv,
weil durch viele redundante Bestandteile statischer Speicherplatz übermäßig beansprucht
wird.
-
Es
ist Aufgabe der vorliegenden Erfindung, eine platzsparende Möglichkeit
bereitzustellen, mehrere virtuelle Maschinen auf einem mobilen Endgerät laufen
zu lassen, so dass das mobile Endgerät für eine Mehrzahl von Applikationen,
welche für
verschiedene Softwareplattformen implementiert sind, geeignet ist.
-
Die
erfindungsgemäße Aufgabe
wird durch ein mobiles Endgerät
nach Patentanspruch 1 und ein Verfahren nach Patentanspruch 5 gelöst.
-
Die
Erfindung beruht auf der Erkenntnis, dass jede virtuelle Maschine
einen Garbage Collector, einen Threadmanager und eine Laufzeitbibliothek
aufweist, und dass diese Elemente sich bei verschiedenen virtuellen
Maschinen nicht allzu stark voneinander unterscheiden, so dass jedes
dieser Elemente nur ein einziges Mal in einer universelleren Form
vorgesehen sein muss und virtuelle Maschinen für verschiedene Softwareplattformen
auf diese gemeinsamen Elemente dann zugreifen können.
-
Die
virtuellen Maschinen müssen
dann für diese
gemeinsamen Komponenten, insbesondere für die gemeinsame (generische)
Laufzeitbibliothek, adaptierte Schnittstellen aufweisen.
-
Um
die geladenen Applikationen dem Charakter ihrer Implementation entsprechend
abarbeiten zu können,
gibt es ein generisches Programm, welches diese Applikationen für ihre jeweilige
virtuelle Maschine lädt.
Wird eine Applikation geladen, für
die die entsprechende virtuelle Maschine auf dem mobilen Gerät noch nicht
vorhanden ist, so kann die entsprechende virtuelle Maschine gleich
mit der Applikation auf das Gerät
geladen werden. Möglich
wird dies, weil die Erfindung den Speicherumfang einer virtuellen
Maschine drastisch reduziert, da ein Großteil ja in den generischen,
von den virtuellen Maschinen gemeinsam genutzten Komponenten steckt.
Das generische Ladeprogramm muss so ausgelegt sein, dass es erkennt,
zu welcher Softwareplattform eine Applikation gehört, dass
es prüft,
ob es für
diese Softwareplattform eine virtuelle Maschine gibt und diese virtuelle
Maschine gegebenenfalls zuordnet oder im Falle, dass es die betreffende
virtuelle Maschine auf dem mobilen Endgerät bisher nicht gibt, eine solche virtuelle
Maschine von einem durch die Applikation genauer spezifizierten
Ort eines Softwarenetzes (das Internet etc.)herunterlädt. Gegebenenfalls
können verschiedene
virtuelle Maschinen für
verschiedene Softwareplattformen verschiedene Applikationen gleichzeitig
laufen lassen, d. h. es könnte
z. B. ein für Java
geschriebenes Spiel parallel zu einer für .NET geschriebenen Businessapplikation
laufen, oder es könnten
auch mehrere Business-Applikationen gleichzeitig verwendet werden,
die für
die Abarbeitung auf verschiedenen virtuellen Maschinen vorgesehen
sind.
-
Dies
wird dadurch erleichtert, dass verschiedene virtuelle Maschinen
zur Verfügung
stehen, welche voneinander unabhängig
sind und von dem generischen Ladeprogramm gesteuert sind.
-
Die
Erfindung wird nun nachfolgend unter Bezug auf die Zeichnung näher beschrieben,
in der:
-
1 Softwareeinheiten
auf einem mobilen Endgerät
gemäß dem Stand
der Technik zeigt,
-
2 Softwareeinheiten
auf einem mobilen Endgerät
gemäß der Erfindung
zeigt,
-
3 das
gleichzeitige Laufen von verschiedenen Applikationen auf dem mobilen
Endgerät
veranschaulicht und
-
4 das
Laden einer virtuellen Maschine auf das mobile Endgerät veranschaulicht.
-
Wie
oben bereits erwähnt,
gibt es im Stand der Technik kaum mobile Endgeräte, auf denen zwei oder mehr
verschiedene virtuelle Maschinen laufen. Die 1 veranschaulicht
ein solches mobiles Endgerät 10 gemäß dem Stand
der Technik, auf dem ausnahmsweise zwei verschiedene virtuelle Maschinen 12 und 12' implementiert
sind.
-
Auf
dem mobilen Endgerät 10 befindet
sich immer eine native Laufzeitbibliothek 14, auf der (falls vorhanden)
die Laufzeitbibliothek einer jeden virtuellen Maschine aufsetzen
muss. Dadurch erfolgt ein Mapping der in der Softwareplattform beschriebenen Laufzeitplattform
auf die physische Plattform des Gerätes.
-
Die
virtuellen Maschinen 12 und 12' sind ähnlich aufgebaut.
-
Jede
virtuelle Maschine umfasst eine eigene Laufzeitbibliothek 16 bzw. 16', welche dafür zuständig ist,
nach der Interpretation des Bytecodes der Applikation eine Abbildung
auf die Funktion der nativen Laufzeitbibliothek vorzunehmen.
-
Eine
Applikation reserviert stets einen gewissen Anteil am Hauptspeicher,
der ihren zugehörigen Adressraum
darstellt, und auf den andere Applikationen nicht zugreifen können. Innerhalb
einer Applikation kann es jedoch mehrere Programmbestandteile – so genannte „Threads" – geben, die zunächst unabhängig voneinander
und daher auch parallel ablaufen können. Da diese Threads Bestandteile
der gleichen Applikation sind, laufen sie im selben Adressraum und
können
konkurrierend z. B. auf dieselbe Variable zugreifen – was unterschiedliche
Applikationen nicht können.
Die Aufgabe eines Threadmanagers besteht nun darin, diese Threads
innerhalb einer Applikation zu verwalten, ihnen Ressourcen zuzuteilen
usw. Jede herkömm liche
virtuelle Maschine umfasst ihren eigenen Threadmanager 18 bzw. 18'.
-
Beide
virtuelle Maschinen 12 und 12' umfassen ferner einen Garbage
Collector 20 bzw. 20', welcher der Verwaltung von Speicherplatz
dient. In klassischen Softwareplattformen muss Speicherplatz, der
nicht mehr benötigt
wird, explizit freigegeben werden. In Softwareplattformen mit virtueller
Maschine übernimmt
diese Aufgabe ein Garbage Collector, indem er die Feststellung,
welcher Speicherplatz nicht mehr benötigt wird, sowie die Freigabe
eben dieses Speicherplatzes automatisiert.
-
Applikationen
werden über
Schnittstellen 22 bzw. 22' auf das mobile Endgerät geladen
und werden von der virtuellen Maschine interpretiert, d. h. ein Bytecode
einer Applikation wird in einer für die Maschine verständlichen
Sprache simuliert.
-
Die
Erfindung beruht nun auf der Erkenntnis, welche der Erstellung der 1 zugrunde
liegt, nämlich
dass die virtuellen Maschinen 12 und 12' für verschiedene
Softwareplattformen, Softwareplattform 1 und Softwareplattform 2,
also z. B. für
Java und .NET, sehr ähnlich
aufgebaut sind. Es gibt bei den Laufzeitbibliotheken 16, 16', den Threadmanagern 18, 18' und den Garbage
Collectoren 20, 20' Gemeinsamkeiten
im Aufbau und ganz erhebliche Mehrfach-Implementierungen von Funktionalitäten für jede einzelne
virtuelle Maschine. Die dadurch vorhandene Redundanz führt zu einer
Verschwendung an Speicherplatz auf dem mobilen Endgerät 10,
die zu beenden ist.
-
Die
Erfindung stellt daher ein mobiles Endgerät 24 gemäß 2 bereit.
Das mobile Endgerät 24 umfasst
ebenfalls eine native Laufzeitbibliothek 14, die die physische
Realisierung der Funktionalität
des Laufzeitsystems sicherstellt. Eine Änderung ergibt sich für die Abbildung
der in einer Softwareplattform implementierten Funktionalität auf diese
native Laufzeitbibliothek. Das mobile Endgerät 24 umfasst nur noch
eine generische Laufzeitbibliothek 26 für eine Vielzahl von virtuellen
Maschinen 27, 27'.
Sie umfasst auch nur noch einen gemeinsamen Threadmanager 28 und
einen gemeinsamen Garbage Collector 30. Erfindungsgemäß sind also
Laufzeitbibliothek 16, 16', Threadmanager 18, 18' und Garbage
Collector 20, 20' aus
den virtuellen Maschinen 12, 12', welche in 1 gezeigt
sind, ausgelagert, und jeweils nur noch ein einziges solches Softwareelement
ist in dem mobilen Endgerät 24 vorgesehen.
-
Geladene
Applikationen werden einheitlich vom neu hinzugekommenen, generischen
Ladeprogramm 32 behandelt. Das generische Ladeprogramm 32 dient
dazu, die Applikationen den zugehörigen virtuellen Maschinen
zuzuordnen, d. h. die virtuelle Maschine für Java 27 zuzuordnen,
wenn es sich um eine Java-Applikation handelt und die virtuelle
Maschine CLR VM 27' für .NET-Applikationen zuzuordnen,
wenn es sich um .NET-Applikationen handelt. Jede virtuelle Maschine 27, 27' muss entsprechende
adaptive Schnittstellen für
den Threadmanager 28, den Garbage Collector 30 und
die generische Laufzeitbibliothek 26 aufweisen. Dabei können die Schnittstellen
zum Garbage Collector 30 und zum Threadmanager 28 – je nach
deren Implementation – möglicherweise
sehr einfach ausfallen.
-
Es
sei betont, dass hier ein Unterschied zwischen der nativen Laufzeitbibliothek 14 und
der generischen Laufzeitbibliothek 26 gemacht ist. Die
native Laufzeitbibliothek ist, wie sich aus 1 ergibt,
allen mobilen Endgeräten
gemeinsam. Das besondere an der Erfindung ist die gemeinsame einzige
generische Laufzeitbibliothek. Die generische Laufzeitbibliothek
enthält
bereits Programmbefehle in einer standardisierten Form. Beispielsweise
ist das Zeichnen einer Linie von vier Daten abhängig, nämlich von dem Wert X1 und Y1
für den
Anfangspunkt der Linie in einem kartesischen Koordinatensystem und
dem Wert X2 und Y2 für
den Endpunkt in einem kartesischen Koordinatensystem. Andere Befehlsformen geben
beispielsweise die Länge
der Linie ΔX
und ΔY zusätzlich zu
dem Anfangspunkt X1, Y1 an. Die adaptive Schnittstelle 34 und 34' schafft eine
Anpassung der Befehls, d. h. sie überträgt die letztere Vari ante in
die Variante der generischen Laufzeitbibliothek 26, indem
im Beispiel die Länge
der Linie zu den Koordinaten ihres Anfangspunktes addiert wird,
um so ihren Endpunkt zu erhalten.
-
3 zeigt
nun eine Abwandlung der Funktionsweise des erfindungsgemäßen mobilen
Endgeräts 24.
Das Vorhandensein des generischen Ladeprogramms 32, welches
eine Steuerungsfunktion hat, ermöglicht
es, verschiedene virtuelle Maschinen 36, 36' gleichzeitig
laufen zu lassen. Dies ist in 3 dadurch
veranschaulicht, dass die virtuellen Maschinen nebeneinander dargestellt
sind. Beide virtuellen Maschinen sind von dem generischen Ladeprogramm
gesteuert, und beide greifen unabhängig voneinander auf den Threadmanager 28 und
den Garbage Collector 30 zu und stehen ferner in Verbindung mit
der generischen Laufzeitbibliothek 26 über die adaptiven Schnittstellen 34 und 34'.
-
Die
virtuellen Maschinen 36 und 36' sind nicht notwendigerweise virtuelle
Maschinen für
verschiedene Softwareplattformen, sondern können auch Kopien voneinander
sein, d. h. es kann zweimal dieselbe virtuelle Maschine vorgesehen
sein, welche in Kopie auf dem mobilen Endgerät 24 vorliegt, um gleichzeitig
zwei Applikationen derselben Softwareplattform ablaufen zu lassen.
Dies wird dadurch möglich,
dass die virtuellen Maschinen auf dem mobilen Endgerät 24 wenig
Platz wegnehmen, weil Speicherplatz durch die Auslagerung von generischer
Laufzeitbibliothek 26, den Threadmanager 28 und
dem Garbage Collector 30 gespart wird.
-
4 veranschaulicht
nun eine weitere Möglichkeit,
die die Erfindung bereitstellt. Durch das Vorhandensein eines generischen
Ladeprogramms und die Erleichterung der Speicherung von einer Mehrzahl
von virtuellen Maschinen 27, 27' auf dem mobilen Endgerät 24 wird
es auch möglich,
neue virtuelle Maschinen 38 zu laden. Insbesondere wenn Applikationen
geladen werden, für
eine andere Softwareplattform geschrieben sind, für die bisher
noch keine virtuelle Maschine auf dem mobilen Endgerät 24 implementiert
ist, kann das generische Ladeprogramm 32 aus der Netzverbindung,
aus der die Applikation herrührt,
die virtuelle Maschine 38 laden, die virtuelle Maschine 38 dann
in dem mobilen Endgerät 24 aktivieren
und sie in Verbindung mit dem Garbage Collector 30, dem
Threadmanager 28 und der generischen Laufzeitbibliothek 26 setzen,
um sie so nutzbar zu machen. Diese Ausführungsform der Erfindung macht
es notwendig, gleichzeitig mit Applikationen in Netzwerken virtuelle
Maschinen anzubieten, welche keinen Garbage Collector, keinen Threadmanager
und keine vollständige
Laufzeitbibliothek aufweisen, sondern nur geeignete adaptive Schnittstellen
zu den gemeinsamen Komponenten. Diese Schnittstelle versetzen sie
in die Lage, auf dem mobilen Endgerät 24 auf den gemeinsamen
Garbage Collector 30, den gemeinsamen Threadmanager 28 und
die generische Laufzeitbibliothek 26 zuzugreifen und diese
nutzbar zu machen. Mit dem Voranschreiten der neuen Technik wird
sich dieses aus der Notwendigkeit automatisch ergeben.
-
- 10,
24
- mobiles
Endgerät
- 12,
12', 27, 27', 36, 36', 38
- virtuelle
Maschinen
- 14
- native
Laufzeitbibliothek
- 16,
16'
- Laufzeitbibliothek
- 18,
18', 28
- Threadmanager
- 20,
20', 30
- Garbage
Collector
- 22,
22'
- Schnittstellen
- 26
- generische
Laufzeitbibliothek
- 32
- generisches
Ladeprogramm
- 34,
34'
- adaptive
Schnittstelle