-
HINTERGRUND DER ERFINDUNG
-
1. FACHGEBIET DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft allgemein Computersoftware. Im einzelnen
betrifft die vorliegende Erfindung Verfahren und Geräte zur Steuerung
bzw. Verwaltung der Ausführung
einer Anwendung. Zusätzlich
betrifft die vorliegende Erfindung Verfahren und Geräte zum Implementieren
eines Anwendungs-Lebenszyklus-Design für Software-Anwendungen.
-
2. BESCHREIBUNG DES STANDES
DER TECHNIK
-
Die
Fortentwicklung des digitalen Fernsehens ist eines der bedeutendsten
Ereignisse in der Geschichte des Fernseh-Rundfunks. Mit der Einführung des
digitalen Fernsehens ist über
Satelliten-, Kabel- und terrestrische Fernsehkanäle eine Hochgeschwindigkeits-Datenübertragung
möglich.
Das digitale Fernsehen bietet den Nutzern mehr Kanäle sowie
eine deutlich verbesserte Video- und Audio-Qualität. Am wichtigsten
ist, dass das digitale Fernsehen das Zeitalter des echten interaktiven
Fernsehens einleitet. Beispielsweise werden digitale Empfänger in der
Lage sein, den Nutzern eine Vielzahl von verbesserten Diensten von
einfachen interaktiven Quizshows bis zum Internet sowie eine Mischung
aus Fernsehen und einem Inhalt vom Web-Typ anzubieten. Mit dem Anwachsen
des Marktes für
das digitale Fernsehen sind Inhaltsentwickler auf der Suche nach einer
merkmalsreichen, kosteneffektiven und zuverlässigen Software-Plattform,
um mit dieser die nächste
Generation der interaktiven Fernsehdienste, wie etwa die elektronische
Programmierführung (Electronic
Programming Guides), Video-On-Demand (Video auf Abruf) sowie das
Enhanced Broadcasting (verbesserte Übertragung), aufzubauen.
-
Java
ist eine führende,
kommerzielle, objektorientierte Sprache, die als portable Sprache
entworfen ist, welche auf vielen kompatiblen, die JavaTM-Plattform
unterstützenden
Vorrichtungen ablaufen kann. Beispielsweise ist Java in allen Haupt-Webbrowsern
enthalten. Von daher läuft über den
Webbrowser des Computers Java auf jedweden webfähigen Computern. Von daher
bietet Java ein hohes Versprechen als Software-Plattform für Set-Top-Boxen
und für
das digitale Fernsehen.
-
Bei
der objektorientierten Programmierung sind Codes und Daten in Objekten
verflochten. Jedes Objekt wird über
seine Klasse definiert, die die Eigenschaften und das Verhalten
eines Objektes festlegt. Anders ausgedrückt bedeutet dies, dass Objekte
individuelle Fälle
einer Klasse sind.
-
In
der Desktop-Umgebung brauchen bestimmte, in Zusammenhang mit jeder
geladenen Anwendung (z.B. Klassen und Objekte) stehende Betriebsmittel
nicht häufig
freigegeben oder streng überwacht
werden, da der Speicher relativ unbegrenzt ist. Jedoch ist in der
Umgebung von eingebauten Systemen, insbesondere auf dem Gebiet des
digitalen Fernsehens, der Speicher ein wertvolles Betriebsmittel.
Darüber
hinaus wird es in einer interaktiven digitalen Fernseh-Umgebung
gebräuchlich
sein, mehrere Anwendungen ablaufen zu lassen. Ein digitaler Fernsehdienst
kann aus Audio, Video und einer oder mehreren Anwendungen bestehen.
Wenn beispielsweise ein Fernsehzuschauer den Kanal wechselt, wird
jeder in Zusammenhang stehende Dienst oder jedes in Zusammenhang
stehende Programm, die durch den Kanal bereitgestellt werden, es
auf gleiche Weise erfordern, dass mehrere Klassen geladen werden.
Als ein Ergebnis hiervon wird der Speicher kontinuierlich für die Anwendungen
und zugehörigen
Klassen belegt sein, bis der begrenzte Umfang des Speichers verbraucht
ist. Sobald der Speicher verbraucht ist, wird es nicht möglich sein,
irgendeine weitere Anwendung laufen zu lassen. Dieses ist im einzelnen
wichtig, da es unerwünscht
sein wird, die Set-Top-Box in dem Ereignis eines Fehlers erneut
zu booten.
-
Die
Java-Plattform definiert gegenwärtig eine
Anzahl von Anwendungsmodellen, und zwar jedes mit seinem eigenen
Lebenszyklus. Im allgemeinen sind diese Anwendungs-Lebenszyklus-Modelle ausgestaltet
worden, um auf der Java-Plattform
spezielle Themen zu adressieren. Beispielsweise wurde das Applet
ausgestaltet, um eine Unterstützung
für einen
ausführbaren
Inhalt in Webseiten bereitzustellen. Allerdings geht keines der
bestehenden Anwendungs-Lebenszyklus-Modelle
vollständig
diejenigen Anforderungen an, die speziell für Systeme mit begrenztem Speicher,
wie etwa für
Fernsehempfänger, sind.
Bei den in Zusammenhang mit einem Applet stehenden Klassen werden,
sobald sie geladen sind, beispielsweise ihre Klassenobjekte nicht
von dem Speicher entfernt. Darüber
hinaus ist es nicht möglich,
festzustellen, wann die Ausführung
bzw. Anwendung des Applets abgeschlossen wurde.
-
Die
Druckschrift EP-A-0524071 beschreibt ein Betriebssystem (GPOS),
welches einen Anwendungsmanager (GA) enthält, der den Zustand (S1 – S5) überwacht
und definiert, in welchem sich jede einer Vielzahl von Anwendungen
(A1 – An) befinden muss.
-
Die
Druckschrift EP-A1-0908821 beschreibt einen Decoder für ein digitales
Fernsehsystem, welches ein Datenverarbeitungssystem aufweist, das eine
erste virtuelle Einrichtung enthält,
um heruntergeladene interpretierbare Sprachanweisungen zu empfangen,
die zu einem geeigneten Interpreten zur Ausführung geleitet werden.
-
Im
Hinblick auf das zuvor Genannte wäre es von Vorteil, wenn ein
Anwendungs-Lebenszyklus derart ausgestaltet ist, um die speziell
mit Fernsehempfängern
in Verbindung stehenden Anforderungen anzugehen. Darüber hinaus
wäre es
erstrebenswert, wenn ein Mechanismus zum Verwalten bzw. Steuern
des Ladens und des Ausführens
einer Anwendung gemäß einem
Anwendungs-Lebenszyklus ausgestaltet ist.
-
Die
vorliegende Erfindung ermöglicht
es, dass eine oder mehrere Anwendungen verwaltet bzw. gesteuert
werden. Zusätzlich
kann die Ausführung
von einer oder mehreren Anwendungen gemäß einem Anwendungs-Lebenszyklus
verwaltet bzw. gesteuert werden. Dieses wird teilweise durch die
Verwendung eines Anwendungsmanagers ausgebildet, der in der Lage
ist, Änderungen
in dem Zustand der Anwendung zu initiieren und zu überwachen.
Auf diese Art und Weise können
Anwendungen in einer konsistenten Art und Weise auf einer Vielzahl
von Plattformen ausgeführt
werden.
-
Gemäß einem
ersten Aspekt der Erfindung wird ein digitaler Fernsehempfänger zum
Verwalten bzw. Steuern der Ausführung
einer Anwendung gemäß einem
Anwendungs-Lebenszyklus bereitgestellt, wobei der digitale Fernsehempfänger folgendes
aufweist: einen Prozessor; und einen Speicher (1508), der computerlesbare
Anweisungen speichert, wobei die computerlesbaren Anweisungen folgendes aufweisen:
Anweisungen, um von einem Datenstrom zu ermitteln, ob eine Anwendung
in dem Datenstrom vorhanden ist; Anweisungen, um die Anwendung zu laden,
wenn ermittelt wird, dass die Anwendung in dem Datenstrom vorhanden
ist; und Anweisungen, um die Anwendung gemäß einem Anwendungs-Lebenszyklus,
der eine Vielzahl von Zuständen
enthält, auszuführen.
-
Gemäß weiteren
Aspekten der Erfindung werden ein Computerprogramm-Code, der mit
einem Datenprozessor ausführbar
ist, um den digitalen Fernsehempfänger gemäß dem ersten Aspekt der Erfindung
bereitzustellen, sowie ein computerlesbares Medium bereitgestellt,
welches den Computerprogramm-Code trägt.
-
Die
vorliegende Erfindung ermöglicht
es, dass Anwendungen gemäß einem
Anwendungs-Lebenszyklus von einem Anwendungsmanager verwaltet bzw.
gesteuert werden. Dieses ermöglicht
es, dass Anwendungen in einer vorhersehbaren Art und Weise unabhängig der
Plattform, auf welcher sie ausgeführt werden, ausgeführt werden.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Unter
Bezugnahme auf die nachfolgende Beschreibung, die in Verbindung
mit den beigefügten Zeichnungen
zu lesen ist, kann die Erfindung zusammen mit weiteren Vorteilen
hiervon am besten verstanden werden, wobei in den Zeichnungen folgendes
gilt.
-
1 ist
ein Blockdiagramm, welches einen digitalen Fernsehempfänger darstellt,
in welchem die vorliegende Erfindung implementiert werden kann.
-
2A ist
ein Blockdiagramm, welches eine Ausführungsform der Erfindung zeigt,
in welcher ein Anwendungsmanager verwendet wird, um die über den
digitalen Fernsehempfänger
geladene Anwendungen zu verwalten bzw. zu steuern.
-
2B ist
eine Darstellung, die einen exemplarischen Regelsatz zeigt, gemäß dem der
in der 2A gezeigte Anwendungsmanager
operieren kann.
-
3 ist
ein Blockdiagramm, welches eine exemplarische Datenstruktur zeigt,
die verwendet wird, um die von dem in der 2A gezeigten
Anwendungsmanager empfangenen Signaldaten zu speichern.
-
4A ist
eine Darstellung, die eine exemplarische Kontextliste bzw. Zusammenfassungsliste zeigt,
auf die von dem Anwendungsmanager während der Verwaltung bzw. Steuerung
und der Ausführung
der zugehörigen
Anwendungen zugegriffen wird.
-
4B ist
eine Darstellung, die eine exemplarische Datenstruktur zeigt, welche
verwendet wird, um einen Anwendungskontext zu speichern, welcher in
der exemplarischen Kontextliste identifiziert ist.
-
5A ist
ein Blockdiagramm, welches eine exemplarische Liste von Displaykontexten
zeigt, auf die von einem Displaymanager gemäß einer Ausführungsform
der Erfindung zugegriffen wird.
-
5B ist
ein exemplarisches Zustandsdiagramm, das mit einem Displaykontext
in Zusammenhang steht.
-
5C ist
eine Darstellung, die einen Satz von exemplarischen Displayzuständen zeigt,
die gemäß einem
Satz von exemplarischen Regeln, welche von dem Anwendungsmanager
befolgt werden, erzeugt sind.
-
6 ist
ein Zustandsdiagramm, das einen Satz von Zuständen zeigt, die eine Anwendung
während
des Lebenszyklus der Anwendung annehmen kann.
-
7 ist
eine Darstellung, die ein exemplarisches Anwendungs-Schnittstellen-Identifizierungsverfahren
zeigt, das während
des Lebenszyklus einer Anwendung von einem Anwendungsmanager aufgerufen
werden kann.
-
8 ist
eine Darstellung, die ein exemplarisches Anwendungsumgebungs-Schnittstellen-Identifizierungsverfahren
zeigt, das während
des Lebenszyklus einer Anwendung von einer Anwendung aufgerufen
werden kann.
-
9 ist
eine Darstellung, die Verfahren zeigt, welche entweder von dem Anwendungsmanager
oder von einer Anwendung während
des Lebenszyklus der Anwendung aufgerufen werden können.
-
10 ist
ein Ablaufdiagramm, welches ein Verfahren zum Implementieren eines
Anwendungsmanagers gemäß einer
Ausführungsform
der Erfindung zeigt, um eine Anwendung zu laden und um die Anwendung
gemäß eines
Anwendungs-Lebenszyklus auszuführen.
-
11 ist
ein Ablaufdiagramm, das ein Verfahren zum Laden einer Anwendung,
wie beim Block 1022 der 10 gezeigt,
darstellt.
-
12 ist
ein Ablaufdiagramm, das ein Verfahren zum Ausführen einer Anwendung gemäß eines
Anwendungs-Lebenszyklus,
wie beim Block 1024 der 10 gezeigt,
darstellt.
-
13 ist
ein Ablaufdiagramm, das ein Verfahren zum Ändern des Zustandes einer Anwendung von
einem geladenen Zustand zu einem Pausenzustand, wie es beim Block 1206 der 12 gezeigt
ist, darstellt.
-
14 ist
ein Ablaufdiagramm, das ein Verfahren zum Ändern des Zustandes einer Anwendung von
einem Pausenzustand zu einem aktiven Zustand, wie es beim Block 1208 der 12 gezeigt
ist, darstellt.
-
15 ist
ein Blockdiagramm, welches ein typisches Allzweck-Computersystem
zeigt, das für die
Implementierung der vorliegenden Erfindung geeignet ist.
-
DETAILLIERTE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
In
der nachfolgenden Beschreibung werden verschiedene spezielle Details
ausgeführt,
um ein durchgängiges
Verständnis
der vorliegenden Erfindung bereitzustellen. Für einen Fachmann wird es jedoch
ersichtlich sein, dass die vorliegende Erfindung ohne einige oder
alle diese speziellen Details ausgeführt werden kann. In anderen
Fällen
werden wohlbekannte Prozess-Verfahrensschritte nicht detailliert beschrieben,
um die vorliegende Erfindung in nicht notwendiger Weise zu verschleiern.
-
Hierin
wird eine Erfindung beschrieben, die es ermöglicht, dass eine Anwendung
gemäß einem Anwendungs-Lebenszyklus
geladen und ausgeführt wird.
Die Abfolge der Verfahrensschritte, mit welchen eine Anwendung initialisiert
wird, führt
basierend auf ihrer Umgebung verschiedene Zustandsänderungen durch
und wird gegebenenfalls zerstört
bzw. gelöscht,
was durchgängig
als Anwendungs-Lebenszyklus bekannt ist. Gemäß einer Ausführungsform
wird dies durch die Verwendung eines Anwendungsmanagers ausgebildet,
der in der Lage ist, die Ausführung
von einer oder mehreren Anwendungen zu laden und zu verwalten bzw.
zu steuern. Gemäß einer Ausführungsform
wird der Anwendungs-Lebenszyklus durch die Verwendung von zwei Schnittstellen
implementiert. Zunächst
ermöglicht
es eine Anwendungs-Programmierschnittstelle dem Anwendungsmanager,
die Ausführung
einer Anwendung gemäß dem Anwendungs-Lebenszyklus
zu steuern bzw. zu verwalten. Dann ermöglicht eine Anwendungsumgebungs-Schnittstelle
es der Anwendung, dem Anwendungsmanager ihren Wunsch, von einem
Zustand zu einem anderen zu wechseln, mitzuteilen oder alternativ
hierzu anzuzeigen, dass sie nicht in der Lage ist, eine Zustandsänderung,
wie sie von dem Anwendungsmanager gefordert wird, durchzuführen. Beispielsweise
kann es eine Anwendung erfordern, dass der Anwendungsmanager die
Anwendung veranlasst, in einen aktiven Zustand einzutreten. Als
ein anderes Beispiel kann die Anwendung anzeigen, dass sie einen
Pausenzustand oder einen gelöschten
Zustand angenommen hat (beispielsweise dann, wenn sie nicht in der
Lage ist, in den aktiven Zustand einzutreten, wie es von dem Anwendungsmanager angefordert
wird). Von daher kann die Anwendungsumgebungs- Schnittstelle in der Lage sein, dass
die Anwendung dem Anwendungsmanager mitteilt, dass sie von einem
Zustand in einen anderen Zustand gewechselt hat, da die Anwendung
ultimativ die beste Kenntnis von dem Zustand hat, in welchem sie
sich befindet.
-
Die
Erfindung wird innerhalb des Zusammenhangs eines Digital-Fernsehgerätes und
eines Digital-Fernsehempfängers
beschrieben. 1 ist ein Blockdiagramm, welches
einen exemplarischen Digital-Fernsehempfänger zeigt. Wie dargestellt,
wird ein Signal über
eine Antenne 102 empfangen, und durch ein Tuner-Modul 104 abgestimmt,
das einen MPEG2-Transportstrom 106 erzeugt.
Ein De-Multiplexer 108 erzeugt dann verschlüsselte MPEG-Ströme 110,
die einen Videostrom 112, einen Audiostrom 114 sowie
einen Datenstrom 116 enthalten. Diese drei Ströme werden
dann von einem zugriffsbedingten Subsystem 118 verarbeitet.
Beispielsweise kann das zugriffsbedingte Subsystem 118 Schlüssel-Managementinformation 120 sowie
Entschlüsselungsinformation 122 (beispielsweise
Entschlüsselungs-Algorithmen)
verwenden. Das zugriffsbedingte Subsystem 118 erzeugt entschlüsselte MPEG-Ströme 123, die
einen Videostrom 124 und einen Audiostrom 125 sowie
Daten 126 enthalten, wobei alles hiervon entschlüsselt ist.
Ein Decoder 128 verarbeitet dann den entschlüsselten
MPEG-Strom 123 und leitet die entschlüsselten Videodaten zu einem
Blockpuffer 130 weiter und überträgt die entschlüsselten
Audiodaten zu einem Lautsprecher 132.
-
Eine
Java-Virtual-Machine ist eine Plattform, die zum Implementieren
der vorliegenden Erfindung verwendet werden kann, um die von einem
digitalen Fernsehempfänger,
wie etwa dem in der 1 gezeigten Fernsehempfänger, empfangene
Information zu verarbeiten. Wenn im einzelnen die Daten 126 (beispielsweise
ein übertragener
Datenstrom) verarbeitet werden, ist es erstrebenswert, die in den
Daten 126 bereitgestellte Information, wie etwa eine heruntergeladene
Anwendung, zu verarbeiten.
-
2A ist
ein Blockdiagramm, das eine Ausführungsform
der Erfindung zeigt, in welcher ein Anwendungsmanager implementiert
ist, um Anwendungen zu verwalten bzw. zu steuern, die über den
Digital-Fernsehempfänger
geladen sind. Wie es in der 2A gezeigt
ist, kann die vorliegende Erfindung in einem Digital-Fernsehempfänger implementiert
sein. Ein übertragener
Datenstrom 202 wird von einem Signalisierungs-Monitor empfangen.
Der Signalisierungs-Monitor 204 bestimmt,
ob eine Anwendung in dem übertragenen
Datenstrom 202 vorhanden ist, und stellt Signaldaten 206 bereit,
die die Anwesenheit oder das Fehlen einer Anwendung sowie die in Zusammenhang
mit der Anwendung stehenden Daten, wie etwa der Speicherort der
Anwendung, anzeigen. Der Anwendungsmanager 208 lädt dann
die Anwendung und führt
die Anwendung aus, indem diese Signaldaten 206 verwendet
werden. Beispielsweise kann der Anwendungsmanager 208 die
Anwendung gemäß dem geeigneten
Anwendungs-Lebenszyklus ausführen,
so dass die Anwendung in Erwiderung auf spezielle Konditionen in
die geeigneten Zustände eintritt.
Nachfolgend wird eine Implementierung der Anwendungs-Lebenszyklus-Ausgestaltung
detaillierter beschrieben. Wenn die Anwendung ausgeführt wird,
wird Displayinformation in der Gestalt eines Displaykontextes 210 von
einem Displaymanager 212 bereitgestellt. Dann liefert der
Displaymanager die entsprechende Displayinformation zur Anzeige
auf einem Fernsehmonitor 214.
-
Gemäß einer
Ausführungsform
der Erfindung ist der Anwendungsmanager derart konfiguriert, um
gemäß einem
Regelsatz 216 zu operieren. Diese Regeln können in
einer Vielzahl von Art und Weisen spezifiziert sein, um einen Anwendungs-Lebenszyklus
zu implementieren. Beispielsweise kann ein Anwendungs-Lebenszyklus
eine Anwendung in die Lage versetzen, einen geladenen Zustand, einen Pausenzustand,
einen aktiven Zustand sowie einen gelöschten Zustand durch das Auftreten
von festgelegten Ereignissen zu betreten. 2B ist
eine Darstellung, die einen exemplarischen Regelsatz zeigt, gemäß welchem
der in der 2A gezeigte Anwendungsmanager
operieren kann. Dieser exemplarische Regelsatz 216 weist
vier Regeln auf. Eine erste Regel 218 spezifiziert, dass
der Anwendungsmanager eine oder mehrere Anwendungen verwaltet bzw. steuert.
Jedoch spezifiziert eine zweite Regel 220, dass lediglich
eine Anwendung bei einem festgelegten Zeitpunkt aktiv sein kann
(das heißt,
ausgeführt werden
kann). Darüber
hinaus spezifiziert eine dritte Regel 222, dass zu einem
gegebenen Zeitpunkt nur eine Anwendung angezeigt werden kann. Letztendlich
spezifiziert eine vierte Regel 224, dass lediglich aktive
Anwendungen angezeigt werden. Von daher kann ein Regelsatz in einer
Vielzahl von Art und Weisen ausgestaltet und für einen Anwendungsmanager konfiguriert
sein. Demgemäss
kann der Regelsatz derart ausgestaltet sein, um die Ausführung von
einer oder mehreren Anwendungen gemäß einem Anwendungs-Lebenszyklus
zu verwalten bzw. zu steuern.
-
3 ist
ein Blockdiagramm, das eine exemplarische Datenstruktur zeigt, die
verwendet wird, um die von dem in der 2A gezeigten
Anwendungsmanager empfangenen Signaldaten zu speichern. Die Signaldaten 202 weisen
einen Hinweis auf eine vorhandene Anwendung 304 in dem übertragenen Datenstrom
auf. Wenn eine Anwendung vorhanden ist, wird ein Speicherort 306 der
Datei (beispielsweise das Verzeichnis und der Dateiname) spezifiziert.
Zusätzliche
Information, wie etwa Authentifikationsinformation 308,
versetzt den Erzeuger der Anwendung in die Lage, authentifiziert
zu werden, sowie Zulassungen 310 zeigen an, dass eine bestimmte
Aktion (beispielsweise Lesen/Schreiben) in Zusammenhang mit einer
speziellen Quelle und/oder einem speziellen Ziel ausgeführt werden
kann oder nicht ausgeführt werden
kann.
-
Der
Anwendungsmanager 208 kann zeitgleich den Lebenszyklus
von verschiedenen Anwendungen verwalten bzw. steuern. Um die in
Zusammenhang mit jeder potentiellen ausgeführten Anwendung 400 stehende
Information beizubehalten, verwaltet bzw. steuert gemäß einer
Ausführungsform der
Erfindung der Anwendungsmanager eine Anwendungskontextliste 402. 4A ist
eine Darstellung, die eine exemplarische Anwendungskontextliste 402 zeigt,
auf die von dem Anwendungsmanager 208 während der Verwaltung bzw. Steuerung
und der Ausführung
von zugehörigen
Anwendungen 400 zugegriffen wird. Wie dargestellt, weist
die Anwendungskontextliste 402 einen oder mehrere Einträge auf,
wobei jeder Eintrag einen Anwendungskontext 404 identifiziert,
der in Zusammenhang mit einer der Anwendungen 400 steht.
Im einzelnen stellen die Anwendungen 400-A, 400-B, 400-C und 400-D vier
potentiell verschiedene Anwendungen dar, und zwar mit jeweils verschiedenen
Anwendungskontexten 404-A, 404-B, 404-C und 404-D.
Der Anwendungskontext 404 identifiziert Information, die
in Zusammenhang mit einer Anwendung steht, um die Anwendung in die
Lage zu versetzen, dass sie geladen und von einem Anwendungs-Lebenszyklus
ausgeführt wird.
-
Gemäß einer
Ausführungsform
ist die in Zusammenhang mit einer Anwendung stehende Information
von dem Anwendungskontext 404 zentralisiert und mit Verweisen
versehen. 4B ist eine Darstellung, die
eine exemplarische Datenstruktur zeigt, welche verwendet wird, um
einen Anwendungskontext 404 zu speichern, welcher in der
in der 4A dargestellten exemplarischen
Anwendungskontextliste 402 identifiziert ist. Die exemplarische Datenstruktur
für den
Anwendungskontext 404 weist einen Klassen-Lader-Identifizierer 406 auf,
der einen Klassen-Lader bzw. ein Klassen-Ladeprogramm, ein Objekt,
welches verwendet wird, um Klassen in den Speicher zu laden, identifiziert.
Von daher versetzt der Klassen-Lader-Identifizierer 406 den Anwendungsmanager
in die Lage, eine oder mehrere in Zusammenhang mit der Anwendung
stehende Klassen über
den identifizierten Klassen-Lader zu laden, sowie diese Klassen
nicht zu laden, indem der Klassen-Lader neu mit Verweisen versehen
wird. Zusätzlich
weist die exemplarische Datenstruktur für den Anwendungskontext 404 einen
Signaldaten-Identifizierer 408 auf, der die Signaldaten 302,
wie es in der 3 gezeigt ist, identifiziert.
Von daher kann der Anwendungsmanager 208 diesen Signaldaten-Identifizierer 408 verwenden,
um den Speicherort einer Anwendung sowie den Speicherort von Authentifikations-
und Zulassungsdaten festzustellen. Die exemplarische Datenstruktur
für den
Anwendungskontext 404 weist ferner einen Displaykontext-Identifizierer auf,
der einen Displaykontext identifiziert, welcher Information enthält, die
von dem in der 2A gezeigten Displaymanager 212 verwendet
werden wird, um die Anwendung anzuzeigen. Beispielsweise kann der Displaykontext
einen Verweis auf ein Objekt enthalten, der die Anzeige einer Anwendung
auf einem Bildschirm zulässt,
wie etwa die Größe, die
Position sowie sichtbare Daten. Die exemplarische Datenstruktur
für den Anwendungskontext 404 weist
ferner einen Anwendungs-Identifizierer 412 auf,
der die Anwendung identifiziert. Zusätzlich wird ein Anwendungsumgebungs-Objekt 414 identifiziert,
das die Anwendung in die Lage versetzt, mit dem Anwendungsmanager
zu kommunizieren. Als ein Beispiel kann die Anwendung es wünschen,
ihren Wunsch, einen anderen Zustand einzunehmen, zu übertragen, oder
in einen anderen Zustand einzutreten und diese Zustandänderung
dem Anwendungsmanager zu übertragen
(zum Beispiel zu übertragen,
dass sie den Pausenzustand oder den gelöschten Zustand eingenommen
hat). Als ein anderes Beispiel kann die Anwendung es wünschen,
Information hinsichtlich der Anwendungsumgebung zu erzielen (zum
Beispiel, wie sie in dem zugehörigen
Anwendungskontext gehalten wird). Unter Bezugnahme auf die 8 und die 9 wird
das Anwendungsumgebungs-Objekt 414 im weiteren Detail beschrieben.
Die exemplarische Datenstruktur für den Anwendungskontext 404 ist
ferner gezeigt, um den gegenwärtigen
Anwendungszustand 416 zu identifizieren. Von daher behält der Anwendungsmanager 208 eine
Aufzeichnung des Anwendungszustandes von jeder Anwendung.
-
Wie
zuvor unter Bezugnahme auf die 2A beschrieben,
kann ein separater Displaymanager 212 implementiert sein,
um einen Zugriff auf die Displayvorrichtung zu verwalten bzw. zu
steuern, sowie um die Daten, die letztendlich angezeigt werden,
zu verwalten bzw. zu steuern. Um diesen Prozess zu ermöglichen,
führt der
Displaymanager gemäß einer Ausführungsform
der Erfindung eine Liste von Displaykontexten. 5A ist
ein Blockdiagramm, das eine exemplarische Liste von Displaykontexten
zeigt (Displaykontextliste) 502, auf die von einem Displaymanager
gemäß einer
Ausführungsform
der Erfindung zugegriffen wird.
-
Wie
dargestellt, weist die Displaykontextliste 502 einen oder
mehrere Einträge
auf, die in Zusammenhang mit einer oder mehreren Anwendung 400-A bis 400-D stehen.
Jeder Eintrag in der Displaykontextliste 502 steht in Zusammenhang
mit einem Kontext-Identifizierer 504 und identifiziert
einen Displaykontext 506, der Information hinsichtlich
der Anzeige einer Anwendung spezifiziert. Anders ausgedrückt bedeutet
dies, dass der Displaykontext ein Objekt sein kann, das jene Information
hält, die
von einer Anwendung benötigt
wird, um sich selbst anzuzeigen. Wenn von daher der Displaymanager 212 es wünscht, eine
Anwendung anzuzeigen, kann er das entsprechende „Fenster", auf welches in dem entsprechenden
Displaykontext verwiesen wird, „einschalten", und zwar möglicherweise
indem andere „Fenster" ausgeschaltet werden.
-
Der
Displaykontext kann gemäß einem
Zustandsdiagramm für
den Displaykontext angezeigt werden. 5B ist
ein exemplarisches Zustandsdiagramm, welches in Zusammenhang mit
einem Displaykontext steht. Wie dargestellt, ist der Displaykontext
sichtbar 508, wenn er sich in einem ersten Displayzustand
befindet, und er ist unsichtbar 510, wenn er sich in einem
zweiten Displayzustand befindet. Der entsprechende Displayzustand
wird gemäß einer Ausführungsform
durch die von dem Anwendungsmanager verfolgten Regeln ermittelt
bzw. festgestellt.
-
5C ist
eine Darstellung, die eine Tabelle zeigt, welche einen Satz von
exemplarischen Displayzuständen
zeigt, die gemäß einem
Satz von exemplarischen Regeln erzeugt werden, welche von dem Anwendungsmanager
verfolgt werden, wie es zuvor unter Bezugnahme auf die 2B gezeigt
und beschrieben ist. Die Tabelle 512 zeigt alle möglichen Displayzustände 514 und
ihre zugehörigen
Anwendungszustände 516 an.
Gemäß dem exemplarischen Regelsatz,
der von dem Anwendungsmanager verfolgt wird, werden nur aktive Anwendungen
angezeigt. Wenn sich von daher eine Anwendung in dem aktiven Zustand
befindet, ist der Displayzustand sichtbar. Wenn sich alternativ
hierzu eine Anwendung in dem Pausenzustand befindet, ist der Displayzustand
unsichtbar.
-
Indem
eine Anwendung in die Lage versetzt wird, eine Anzahl von Zuständen unter
festgelegten Konditionen einzunehmen, wird ein Anwendungs-Lebenszyklus
implementiert. Die Zustände
sowie die Konditionen, die festlegen, wann eine Anwendung jeden
der Zustände
annehmen wird, können
gemäß der Implementation
des Anwendungsmanagers und der Anwendungs-Lebenszyklen variiert werden. 6 ist
ein Zustandsdiagramm, welches einen Satz von Zuständen zeigt,
die eine Anwendung während des
Lebenszyklus der Anwendung gemäß einer
Ausführungsform
der Erfindung annehmen kann. Wenn der Anwendungsmanager die Anwendung
lädt, tritt die
Anwendung in den geladenen Zustand 602 ein. Sobald die
Anwendung in den geladenen Zustand 602 eintritt, kann die
Anwendung nach ihrer Initialisierung durch den Anwendungsmanager
in den Pausenzustand 604 eintreten. Nur der Anwendungsmanager
kann die Anwendung veranlassen, ihren Zustand von dem Pausenzustand 604 zu
dem aktiven Zustand 606 zu ändern. Jedoch kann entweder
der Anwendungsmanager oder die Anwendung die Anwendung veranlassen,
von dem aktiven Zustand 606 in den Pausenzustand 604 einzutreten.
Zusätzlich kann
entweder der Anwendungsmanager oder die Anwendung die Anwendung
veranlassen, zu enden und von dem geladenen Zustand 602,
dem aktiven Zustand 606 oder dem Pausenzustand 604 in
den gelöschten
Zustand 608 einzutreten.
-
Wie
es zuvor unter Bezugnahme auf die 6 beschrieben
wurde, kann der Zustand der Anwendung durch das Ausführen der
Anwendung oder eine Anwendung, die verschieden von der Ausführungs-Anwendung
ist (beispielsweise der Anwendungsmanager), geändert werden. In vielen objektorientierten
Sprachen können
Verfahren und Variable in Module gruppiert werden, so dass die Namen
und Parameter der Verfahren für
externe Prozesse sichtbar sind (beispielsweise durch eine Schnittstelle), während Details
hinsichtlich der Implementation für diese externen Prozesse verborgen
sind. Gemäß einer
Ausführungsform
sind die Schnittstellen und die zugehörigen Verfahren, auf die die
Anwendung und der Anwendungsmanager zugreifen können, in etwas „eingepackt", was von nun an
als Pakete bezeichnet wird.
-
Jedes
Paket weist eine zugehörige
Schnittstelle auf, die jene Namen und Parameter der Verfahren definiert,
die extern sichtbar sind. Zusätzlich
weist jedes Paket einen zugehörigen
Körper
auf, der die Körper
der Verfahren und von daher die Details der Implementation enthält, die
in der Schnittstelle des Pakets definiert sind. Die Anwendung und
der Anwendungsmanager können
die beiden verschiedenen Schnittstellen zur Kommunikation verwenden. Von
daher können
der Anwendungsmanager und die Anwendung den Zustand der Anwendung
durch die Verwendung von zwei verschiedenen Schnittstellen ändern, und
zwar durch eine Anwendungs-Schnittstelle
bzw. eine Anwendungsumgebungs-Schnittstelle. Zusätzlich können der Anwendungsmanager
und die Anwendung Information übertragen,
wie etwa Information hinsichtlich Zustandsänderungen oder potentieller
Zustandsänderungen.
-
7 ist
eine Darstellung, die ein exemplarisches Anwendungs-Schnittstellen-Identifizierungsverfahren
zeigt, welches von einem Anwendungsmanager (oder einem anderen Prozess)
während
des Lebenszyklus einer Anwendung aufgerufen werden kann, um den
Zustand der Anwendung zu ändern. Eine
Anwendungs-Schnittstelle 702 definiert alle Verfahren und
zugehörigen
Parameter, die von dem Anwendungsmanager aufgerufen werden können. Ein Initialisierungsverfahren
ist verfügbar,
um den Anwendungsmanager in die Lage zu versetzen, die Anwendung
zu initialisieren. Beispielsweise kann das Initialisierungsverfahren 704 der
Anwendung signalisieren, sich selbst zu initiieren und den Pausenzustand
von dem geladenen Zustand einzunehmen. Gemäß einer Ausführungsform
ist ein Parameter des Initialisierungsverfahrens 704 ein
Anwendungsumgebungs-Objekt 706, welches nachfolgend unter
Bezugnahme auf die 8 im weiteren Detail beschrieben
wird. Das Anwendungsumgebungs-Objekt 706 kann ebenso von
der Anwendung verwendet werden, um auf Eigenschaften, die mit der
Laufzeitumgebung der Anwendung in Zusammenhang stehen, zuzugreifen,
wie es nachfolgend beschrieben wird. Zusätzlich kann die Anwendung durch
die Verwendung des Anwendungsumgebungs-Objektes 706 die
Eigenschaften abrufen, die in Zusammenhang mit ihrer Laufzeitumgebung
stehen. Beispielsweise weisen Eigenschaften, die abgefragt werden
können,
einen Verweis auf die Signalisierungsdaten und einen Verweis auf
die Umgebung des Dienstes, der dargestellt wird (z.B. Audio-/Video-Umgebung),
auf. Auf diese Art und Weise kann sich die Anwendung selber bei
der Vorbereitung ihrer Ausführung
initialisieren. Obwohl die Anwendung in bevorzugter Weise keine
gemeinsam benutzten Betriebsmittel vor der Ausführung hält, sollte sie derart eingerichtet
sein, um in einer angemessenen Zeit ausgeführt zu werden. Das Initialisierungsverfahren 704 sollte
nur einmal aufgerufen werden. Nachdem das Initialisierungsverfahren 704 erfolgreich
zurückkehrt,
befindet sich die Anwendung in dem Pausenzustand. Wenn das Initialisierungsverfahren 704 nicht
erfolgreich zurückkehren
kann, gibt die Anwendung eine Zustandsänderungs-Ausnahme zurück, die
anzeigt, dass die Anwendung nicht in den Pausenzustand eintreten
kann.
-
Sobald
sich die Anwendung in dem Pausenzustand befindet, kann die Anwendung
in den aktiven Zustand eintreten. Jedoch kann nur der Anwendungsmanager
diese Zustandsänderung
unter Verwendung eines Startverfahrens 708 veranlassen.
Sobald das Startverfahren 708 aufgerufen ist, signalisiert
die Anwendung, die Bereitstellung eines Dienstes zu starten, und
tritt in den aktiven Zustand ein. In dem aktiven Zustand kann die
Anwendung gemeinsam genutzte Betriebsmittel halten. Eine Vielzahl
von Fehlern kann verhindern, dass der Dienst startet. Beispielsweise
kann der Fehler kurzlebig oder nicht kurzlebig sein. Gemäß einer
Ausführungsform
unterscheidet die Anwendung zwischen diesen beiden Fehlerarten.
Für kurzlebige
Fehler wird eine Zustandsänderungs-Ausnahme
aufgeworfen. Wenn ein nicht kurzlebiger Fehler auftritt, kann eine
andere Ausnahme aufgeworfen werden, oder es kann ein durchgeführtes Verfahren
aufgerufen werden, um das Verfahren geeignet zu beenden. Wenn beispielsweise
die Anwendung feststellt, dass sie nicht auf die Betriebsmittel
zugreifen kann, die sie zur Ausführung benötigt, kann
dies entweder als ein kurzlebiger oder als ein nicht kurzlebiger
Fehler implementiert werden.
-
Sobald
ein Pausenverfahren 710 von dem Anwendungsmanager aufgerufen
ist, signalisiert es der Anwendung, die Ausführung anzuhalten und von dem
aktiven Zustand in den Pausenzustand einzutreten. In dem Pausenzustand
hält die
Anwendung die Ausführung
an und versucht so wenig Betriebsmittel wie möglich zu verwenden. Von daher
kann die Anwendung einen Anteil der gemeinsam genutzten Betriebsmittel
oder sämtliche der
gemeinsam genutzten Betriebsmittel, die von ihr gehalten werden,
freigeben.
-
Es
kann erwünscht
sein, die Anwendung von irgendeinem des geladenen Zustands, aktiven
Zustands oder Pausenzustandes zu beenden. Es kann erreicht werden,
indem ein Löschungsverfahren 712 aufgerufen
wird. Das Löschungsverfahren 712 signalisiert
der Anwendung, zu enden und in den gelöschten Zustand einzutreten.
In dem gelöschten
Zustand sollte die Anwendung sämtliche
Betriebsmittel freigeben und Präferenzen
oder Zustandsinformation schonen.
-
Wenn
der Anwendungsmanager es wünscht, eine
Anwendung zu löschen
(beispielsweise zu beenden), mag es erwünscht sein, verschiedene Pegel der
Dringlichkeit anzuzeigen. Gemäß einer
Ausführungsform
wird das Beenden einer Anwendung durchgeführt, wenn eine festgelegte
Kondition erfüllt wird.
Als ein Beispiel kann die festgelegte Kondition das Vorhandensein
eines Signals von der Anwendung sein, welches ihrer vorzeitigen
Beendigung zustimmt. Als ein anderes Beispiel kann die festgelegte Kondition
der Mangel des Empfangs eines Signals von der Anwendung innerhalb
einer speziellen Zeitperiode sein. Dieses kann durch einen Parameter 714 zu
dem Löschungsverfahren 712 bewältigt werden.
Der Parameter 714 zeigt an, dass das Löschungssignal konditional ist,
wenn sich die Anwendung in einem ersten Zustand befindet, und nicht konditional
ist, wenn sich die Anwendung in einem zweiten Zustand befindet.
Wenn von daher es der Anwendungsmanager lediglich wünscht, anzufordern,
dass die Anwendung beendet wird, kann er bei der Entscheidung der
Anwendung, diese zu beenden, spezifizieren, dass das Löschungssignal
konditional ist. Die Anwendung kann anzeigen, dass sie es wünscht, die
Ausführung
fortzuführen
und von daher nicht in den gelöschten
Zustand einzutreten, indem eine Zustandsänderungs-Ausnahme aufgeworfen wird.
Wenn der Anwendungsmanager es wünscht, diese
Anforderung von der Anwendung zu honorieren, kann der Anwendungsmanager
das Löschungsverfahren
erneut bei einem späteren
Zeitpunkt aufrufen. Alternativ hierzu kann der Anwendungsmanager versuchen,
eine andere Anwendung zu löschen,
die beispielsweise eine höhere
(oder niedrigere) Priorität aufweist.
Auf diese Art und Weise kann der Anwendungsmanager Betriebsmittel,
die von ihm benötigt werden
(beispielsweise von der nächsten
Anwendung, die geladen werden muss), von nur jenen Anwendungen erzielen,
die es vorziehen, zu enden. Darüber
hinaus kann der Anwendungsmanager versuchen, die Anwendung in einer
speziellen Reihenfolge zu löschen,
wie etwa in einer Prioritäts-Reihenfolge,
die Anwendung, die den größten (oder
den kleinsten) Umfang des Speichers verwendet, oder in einer Reihenfolge,
in welcher die Ausführung
initiiert wurde.
-
Wenn
der Anwendungsmanager eine spezielle Anwendung beenden muss, kann
er dies durch den Parameter 714 des Löschungsverfahrens 712 anzeigen,
dass das Löschungssignal
bedingungslos ist. Beispielsweise kann der Anwendungsmanager spezifizieren,
dass das Löschungssignal
bedingungslos ist, wenn sämtliche
von der Anwendung gehaltenen Betriebsmittel von dem Anwendungsmanager
benötigt
werden. Von daher kann der Anwendungsmanager eine Anwendung zwingen,
zu enden und die Betriebsmittel, die von ihr gehalten werden, freizugeben,
wenn das Löschungssignal
bedingungslos ist. Selbst wenn eine Anwendung eine Zustandsänderungs-Ausnahme
aufwirft, die anzeigt, dass sie es wünscht, mit der Ausführung fortzufahren,
kann demgemäss
der Anwendungsmanager diese Ausnahme ignorieren, wenn das Löschungssignal bedingungslos ist.
Obwohl sich die zuvor gegebene Beschreibung auf die konditionale
und bedingungslose Beendigung einer Anwendung bezieht, können andere
Operationen auf ähnliche
Weise konditional und bedingungslos durchgeführt werden.
-
Wie
es zuvor beschrieben wurde, wird ein Anwendungsumgebungs-Objekt zu einer Anwendung
gesendet, wenn die Anwendung initialisiert ist. Zusätzlich stellt
das Anwendungsumgebungs-Objekt der
Anwendung einen Mechanismus bereit, um Eigenschaften abzufragen,
sowie eine Art und Weise bereit, um interne Zustandsänderungen
zu signalisieren. Gemäß einer
Ausführungsform
weist das Anwendungsumgebungs-Objekt eine Anwendungsumgebungs-Schnittstelle
auf, die für
die Anwendung verfügbar
ist, welche geladen und ausgeführt
wird. Sobald die Anwendung initialisiert ist, ist im einzelnen die
Anwendungsumgebungs-Schnittstelle für die Anwendung verfügbar.
-
8 ist
eine Darstellung, die ein exemplarisches Anwendungsumgebungs-Schnittstellen-Identifizierungsverfahren
zeigt, dass von einer Ausführungsanwendung
während
des Lebenszyklus der Anwendung aufgerufen werden kann. Wie es nachfolgend
gezeigt und beschrieben wird, stellt eine Anwendungsumgebungs-Schnittstelle 802 verschiedene
Verfahren bereit, die es einer Anwendung gestatten, Information
hinsichtlich ihrer Umgebung aufzudecken sowie mit dem Anwendungsmanager
hinsichtlich ihrer Zustandsänderungen
und gewünschten
Zustandsänderungen
zu kommunizieren.
-
Wie
es zuvor beschrieben wurde, kann die Anwendung von dem geladenen,
aktiven oder Pausenzustand in den gelöschten Zustand eintreten. Darüber hinaus
kann der Anwendungsmanager oder die Anwendung die Anwendung veranlassen,
in den gelöschten
Zustand einzutreten. Wie es unter Bezugnahme auf die 7 gezeigt
und beschrieben wird, kann der Anwendungsmanager die Anwendung löschen, indem
das Löschungsverfahren
aufgerufen wird. Alternativ hierzu versetzt ein Löschungsverfahren 804 der
Anwendungsumgebungs-Schnittstelle 802 die
Anwendung in die Lage, zu signalisieren, dass sie selber in den
gelöschten
Zustand eingetreten ist. Der Anwendungsmanager aktualisiert dann den
Anwendungszustand auf gelöscht,
ohne das in der Anwendungs-Schnittstelle
bereitgestellte Löschungsverfahren
aufzurufen, wie es zuvor unter Bezugnahme auf die 7 beschrieben
ist. Die Anwendung führt
die gleichen Operationen (beispielsweise reinigen, freigeben von
Betriebsmitteln) aus, als ob die Anwendung von dem Anwendungsmanager
gelöscht
wäre. Dieses
wird in bevorzugter Weise ausgeführt,
bevor die Anwendung selber in den gelöschten Zustand eintritt.
-
Wenn
sich die Anwendung in dem aktiven Zustand befindet, kann der Anwendungsmanager oder
die Anwendung die Anwendung veranlassen, in den Pausenzustand einzutreten.
Im einzelnen kann der Anwendungsmanager die Anwendung unter Verwendung
des Pausenverfahrens pausieren, wie es unter Bezugnahme auf die 7 gezeigt
und beschrieben ist. Alternativ hierzu kann die Anwendung signalisieren,
dass die Anwendung es nicht wünscht, aktiv
zu sein, und dass sie in den Pausenzustand über das Pausenverfahren 806 eingetreten
ist.
-
Ein
Get-Property-Verfahren 808, welches einen Parameter 810 aufweist,
stellt eine Anwendung mit einem Mechanismus bereit, um eine oder
mehrere Eigenschaften von dem Anwendungsumgebungs-Objekt abzufragen.
Als ein Beispiel wird in einer Java-Umgebung in typischer Weise
ein „Root-Container" bzw. „Stamm-Container" verwendet, um Benutzerschnittstellen-Komponenten
zu enthalten (beispielsweise Pull-Down-Menüs, Buttons), so dass sie in
der Java-Umgebung angezeigt werden können. Von daher kann das Get-Property-Verfahren 808 verwendet
werden, um den Stamm-Container festzulegen,
in welchem Komponenten platziert werden können. Als ein anderes Beispiel
kann die in Zusammenhang mit dem gesendeten Datenstrom (z.B. der
Standort einer Datei innerhalb des gesendeten Datenstroms) stehende
Information, erzielt werden. Andere Eigenschaften können beispielsweise
einen Verweis auf ein Dienst-Session-Objekt (Dienstkontext) und
Information, die speziell das unterliegende Transportprotokoll ist,
enthalten.
-
Obwohl
nur der Anwendungsmanager eine Anwendung veranlassen kann, in den
aktiven Zustand einzutreten, kann die Anwendung es wünschen,
anzuzeigen, dass sie daran interessiert ist, in den aktiven Zustand
einzutreten. Dieses wird gemäß einer
Ausführungsform über ein
Resümee-Anforderungsverfahren 812 durchgeführt. Durch
das Resümee-Anforderungsverfahren 812 können eine
oder mehrere Anwendungen jeweils einen Wunsch dahingehend anzeigen,
in den aktiven Zustand einzutreten. Jedoch kann die Anzahl der Anwendungen,
die zeitgleich ausgeführt
werden können,
durch den Regelsatz begrenzt sein, den der Anwendungsmanager verfolgt.
Beispielsweise können,
wie es zuvor unter Bezugnahme auf die 2B beschrieben
wird, die Regeln spezifizieren, dass nur eine Anwendung zu einem
Zeitpunkt aktiv sein kann. Von daher können Aufrufe des Resümee-Anforderungsverfahrens 812 von
einem Anwendungsmanager verwendet werden, um jene Anwendungen zu
bestimmen, die es wünschen,
in den aktiven Zustand einzutreten, so dass der Anwendungsmanager
eine oder mehrere der anfragenden Anwendungen auswählen kann,
um sie in den aktiven Zustand zu bewegen.
-
Durch
die zuvor beschriebenen Schnittstellen kann der Anwendungs-Lebenszyklus
sowohl von dem Anwendungsmanager als auch von der Anwendung gesteuert
werden. Obwohl diese in Schnittstellen wohl definiert sind, können die
Körper
der Verfahren, die zuvor unter Bezugnahme auf die 7 und die 8 gezeigt
und beschrieben sind, in einer Vielzahl von Art und Weisen implementiert
werden, solange wie die zugehörige
Schnittstelle (und zugehörige
Zustandsmaschinen) in Einklang hiermit steht.
-
9 ist
eine Darstellung, die exemplarische Verfahren zeigt, welche entweder
von dem Anwendungsmanager oder einer Anwendung während des Lebenszyklus der
Anwendung aufgerufen werden können.
Wie es in der 9 gezeigt ist, können verschiedene
Sätze von
Verfahren von dem Anwendungsmanager 902 und von jeder Anwendung 904, die
von dem Anwendungsmanager 902 verwaltet bzw. gesteuert
wird, aufgerufen werden. Wie es zuvor unter Bezugnahme auf die 7 beschrieben wird,
kann ein erster Satz Verfahren, welcher ein Initialisierungsverfahren 906,
ein Startverfahren 908, ein Löschungsverfahren 910 sowie
ein Pausenverfahren 912 enthält, von dem Anwendungsmanager 902 aufgerufen
werden. Ähnlich
hierzu kann, wie es zuvor unter Bezugnahme auf die 8 beschrieben wird,
ein zweiter Satz Verfahren, der ein Pausenverfahren 914,
ein Löschungsverfahren 916,
ein Resümee-Anforderungsverfahren 918 sowie
ein Get-Property-Verfahren 920 enthält, von einer entsprechenden
Anwendung 904 aufgerufen werden.
-
20 ist ein Ablaufdiagramm, welches gemäß einer
Ausführungsform
der Erfindung ein Verfahren der Implementierung eines Anwendungsmanagers,
eine Anwendung zu laden und die Anwendung in Übereinstimmung mit einem Anwendungs-Lebenszyklus
auszuführen,
zeigt. Der Prozess beginnt beim Block 1002, und beim Block 1004 wird
der Digital-Fernsehempfänger
eingeschaltet. Dann wird beim Block 1006 die Java-Umgebung
gestartet. Beim Block 1008 wird ein Anwendungsmanager aufgebaut,
um eine oder mehrere Anwendungen zu laden und auszuführen. Der
Anwendungsmanager läuft
dann beim Block 1010.
-
Eine
Vielzahl von digitalen Fernsehdiensten kann von einem Digital-Fernsehempfänger, wie
etwa einem in der 1 gezeigten Digital-Fernsehempfänger, empfangen
werden. Zusätzlich
zum Empfang einer Vielzahl von Kanälen (oder Diensten), können diese
Dienste von dem interaktiven Fernsehen bis zum nahezu Video-On-Demand,
zur spezialisierten Programmierung, reichen. Im einzelnen wird ein
von einem Fernsehkanal bereitgestellter Dienst häufig Audio, Video sowie eine
Anwendung aufweisen. Wenn beim Block 1012 ein Dienst ausgewählt wird (z.B.
durch einen Benutzer, der Kanäle
schaltet), wird ein in Zusammenhang mit dem ausgewählten Dienst stehender
Datenstrom über
den Digital-Fernsehempfänger
beim Block 1014 empfangen. Wenn beispielsweise der Benutzer
auf den Disney-Kanal schaltet, ist der Disney-Dienst ausgewählt, und
ein in Zusammenhang mit dem Disney-Dienst stehender Datenstrom wird
empfangen.
-
Beim
Block 1016 wird festgestellt, ob sich eine in Zusammenhang
mit dem ausgewählten Dienst
stehende Anwendung in dem Datenstrom befindet. Wenn beispielsweise
der Benutzer den Disney-Dienst auswählt, kann in dem Datenstrom
eine Disney-Anwendung empfangen werden. Wenn beim Block 1018 festgestellt
wird, dass sich eine Anwendung in dem Datenstrom befindet, lädt der Anwendungsmanager
die Anwendung, wie es beim Block 1022 gezeigt ist, und
führt die
Anwendung gemäß dem Anwendungs-Lebenszyklus
beim Block 1024 aus. Das Laden und Ausführen von Prozessen wird nachfolgend
jeweils unter Bezugnahme auf die 11 und 12 im
weiteren Teil beschrieben. Der Prozess schließt wie dargestellt beim Block 1026 ab. Wenn
sich keine Anwendung in dem Datenstrom befindet, kehrt der Prozess
zu 1020 zurück,
um auf neue Signale zu warten, die sich auf eine Anwendung beziehen,
um in dem beim Block 1014 empfangenen Datenstrom vorhanden
zu sein. Der Prozess fährt dann
beim Block 1016 fort.
-
11 ist
ein Ablaufdiagramm, welches ein Verfahren zum Laden einer Anwendung,
wie es beim Block 1022 der 10 gezeigt
ist, darstellt. Der Prozess beginnt beim Block 1102. Beim
Block 1104 werden Signaldaten, wie etwa jene, die in der 3 gezeigt
sind, von dem Anwendungsmanager bei dem Block 1104 empfangen.
Sobald die Signaldaten empfangen sind, kann der Anwendungsmanager
die Anwendung lokalisieren und laden. Um die in Zusammenhang mit
der Anwendung stehende Information zu speichern, wird ein Anwendungskontext,
wie etwa der in 4B gezeigte Anwendungskontext,
beim Block 1106 erzeugt. Dann kann der Anwendungskontext
verwendet werden, um einen Verweis auf sämtliche Information, die in
Zusammenhang mit der Anwendung steht, zu halten. Sobald beispielsweise
der Anwendungsmanager einen Klassen-Lader bzw. ein Klassen-Ladeprogramm für die Anwendung
erzeugt, wie es beim Block 1108 gezeigt ist, kann ein Verweis auf
den Klassen-Lader in dem Anwendungskontext gehalten werden. Die
in Zusammenhang mit der Anwendung stehenden Klassen werden dann über den Klassen-Lader
beim Block 1110 geladen. Dann wird ein Fall der Anwendung
von den Klassen beim Block 1112 erzeugt.
-
Sobald
die Anwendung instanziiert ist, tritt, wie es beim Block 1114 gezeigt
ist, die Anwendung in den geladenen Zustand ein. Um die Anwendung
in die Lage zu versetzen, die in Zusammenhang mit ihrer Umgebung
stehenden Eigenschaften zu erzielen und mit dem Anwendungsmanager
zu kommunizieren, wird ein Anwendungsumgebungs-Objekt, das mit einer
Anwendungsumgebungs-Schnittstelle, wie etwa die in der 8 gezeigte
Anwendungsumgebungs-Schnittstelle, übereinstimmt, beim Block 1116 instanziiert.
Dann wird das Anwendungsumgebungs-Objekt für die Anwendung initialisiert,
wenn das Initialisierungsverfahren von dem Anwendungsmanager beim
Block 1118 aufgerufen wird.
-
Zusätzlich zum
Laden der Anwendung ist der Anwendungsmanager für die Überwachung und Verwaltung bzw.
Steuerung der Ausführung
der Anwendung verantwortlich. 12 ist
ein Ablaufdiagramm, welches ein Verfahren zum Ausführen einer
Anwendung gemäß einem
Anwendungs-Lebenszyklus, wie es beim Block 1024 der 10 gezeigt
wird, darstellt. Durch die Verwendung der Schnittstellen, wie etwa
jener Schnittstellen, die in der 7 und der 8 gezeigt
sind, können
die Anwendung und der Anwendungsmanager eine Änderung in dem Zustand der
Anwendung vorschlagen, verzögern,
verhindern oder bewirken. Das Nachfolgende ist eine vereinfachte
Beschreibung der Art und Weise, in welcher der Zustand der Anwendung über den
Lebenszyklus der Anwendung geändert
wird. Der Prozess beginnt beim Block 1202. Sobald die Anwendung
in den geladenen Zustand eingetreten ist, wartet die Anwendung beim
Block 1204 auf den Anwendungsmanager, um den Anwendungszustand
auf den Pausenzustand zu ändern.
Wie es zuvor beschrieben ist, kann beispielsweise der Anwendungsmanager
die Anwendung initialisieren, indem das in der Anwendungs-Schnittstelle
bereitgestellte Initialisierungsverfahren verwendet wird, das die
Anwendung veranlasst, wie es beim Block 1206 gezeigt ist,
in den Pausenzustand einzutreten, wie es unter Bezugnahme auf die 13 im
weiteren Detail beschrieben wird. Sobald die Anwendung in den Pausenzustand
geändert
wurde, ändert
danach der Anwendungsmanager eventuell den Anwendungszustand auf
den aktiven Zustand beim Block 1208 (beispielsweise unter
Verwendung des Startverfahrens), wie es im weiteren Detail unter
Bezugnahme auf die 14 gezeigt und beschrieben wird.
Es ist wichtig, darauf hinzuweisen, dass nur der Anwendungsmanager
eine Anwendung veranlassen kann, in den aktiven Zustand einzutreten.
Von dem aktiven Zustand kann entweder die Anwendung oder der Anwendungsmanager
die Anwendung veranlassen, in den Pausenzustand beim Block 1210 durch
das Pausenverfahren, welches in der Anwendungsumgebungs-Schnittstelle
verfügbar
ist, oder durch das Pausenverfahren, welches in der Anwendungs-Schnittstelle
verfügbar
ist, einzutreten. Sobald sich die Anwendung in dem Pausenzustand befindet,
kann die Anwendung anfordern, dass die Ausführung fortgesetzt wird, und
zwar durch das Resümee-Anforderungsverfahren,
welches in der Anwendungsumgebungs-Schnittstelle verfügbar ist. Die Anwendung oder
der Anwendungsmanager kann ebenso die Anwendung veranlassen, zu
enden und den gewünschten
Zustand beim Block 1212 einzunehmen, und zwar über jeweils
das Löschungsverfahren,
das in der Anwendungsumgebungs-Schnittstelle verfügbar ist
oder über
das Löschungsverfahren,
das in der Anwendungs-Schnittstelle
verfügbar ist.
Wie gezeigt, kann die Anwendung in den gelöschten Zustand beim Block 1210 von
irgendeinem des geladenen Zustands, aktiven Zustands oder Pausenzustandes
eintreten. Wenn beispielsweise die Anwendung die Ausführung beendet,
kann die Anwendung in den gelöschten
Zustand eintreten. Zusätzlich kann
in Erwiderung auf ein von dem Fernsehempfänger empfangenes Signal eine
Initiierung von einer Aktion initiiert werden, wie etwa das Laden,
das Starten oder das Beenden einer Anwendung. Dieses kann beispielsweise
auftreten, wenn ein neues Programm beginnt oder wenn ein Benutzer
eine Taste auf der Fernbedienung des Fernsehers drückt, um
einen neuen Kanal zu wählen.
Sobald eine Anwendung ihren Zustand wie angefordert ändert (beispielsweise das
Verfahren kehrt wie geeignet zurück),
aktualisiert der Anwendungsmanager den gegenwärtigen Zustand der Anwendung
in den zugehörigen
Anwendungskontext, wie es in der 4A und
in der 4B gezeigt ist. Obwohl es nicht
unter Bezugnahme auf die 12 beschrieben
wird, werden die zuvor genannten Zustandsänderungen in Übereinstimmung
mit irgendeiner Zustandsänderungs-Ausnahme,
die durch die Anwendung auf geworfen wird, durchgeführt. Wenn
von daher in den meisten Fällen eine
Zustandsänderung
durch die Anwendung aufgeworfen wird, aktualisiert der Anwendungsmanager nicht
den gegenwärtigen
Zustand der Anwendung. Stattdessen kann er versuchen, später die
gleiche Zustandsänderung,
eine andere Zustandsänderung oder
eine Zustandsänderung
von einer anderen Anwendung anzufordern.
-
Sobald
eine Anwendung gelöscht
ist, können die
von der Anwendung gehaltenen Betriebsmittel freigegeben werden.
Beispielsweise kann ein Signal von dem Anwendungsmanager empfangen
werden (beispielsweise von der Anwendung oder der Sendeumgebung über den
Empfänger),
um das Reinigen der Anwendung zu initiieren. Im einzelnen kann der Klassen-Lader
die in Zusammenhang mit der Anwendung stehende Klassen beim Block 1214 entladen. Zusätzlich kann
der Anwendungskontext, auf den durch die Anwendungskontextliste,
wie sie in der 4A und der 4B gezeigt
wird, verwiesen wird, freigegeben werden.
-
Wie
es zuvor beschrieben wird, ändert
der Anwendungsmanager den Zustand einer Anwendung von einem geladenen
Zustand zu einem Pausenzustand, um sie für die Ausführung vorzubereiten. 13 ist
ein Ablaufdiagramm, das ein Verfahren der Änderung des Zustandes einer
Anwendung von einem geladenen Zustand zu einem Pausenzustand darstellt,
wie es beim Block 1206 der 12 gezeigt
ist. Der Prozess beginnt beim Block 1302. Beim Block 1304 ruft
der Anwendungsmanager das Initialisierungsverfahren in der Anwendungs-Schnittstelle
auf und übergibt
das Anwendungsumgebungs-Objekt als Parameter. Dann verwendet die Anwendung
das Anwendungsumgebungs-Objekt, um sich selbst beim Block 1306 zu
initialisieren. Beispielsweise kann das Anwendungsumgebungs-Objekt
Eigenschaften erzielen, wie etwa den Stamm-Container, den sie verwenden
kann, wenn sie sich selbst initialisiert. Danach tritt die Anwendung in
den Pausenzustand ein, wie es beim Block 1308 gezeigt ist.
-
Gemäß einer
Ausführungsform
kann nur der Anwendungsmanager den Zustand der Anwendung in den
aktiven Zustand ändern. 14 ist
ein Ablaufdiagramm, welches ein Verfahren zum Ändern des Zustandes einer Anwendung
von einem Pausenzustand zu einem aktiven Zustand, wie es beim Block 1208 der 12 gezeigt
ist, darstellt. Der Prozess beginnt beim Block 1402. Beim
Block 1404 empfängt die
Anwendung ein Signal, um die Anwendung zu starten. Beispielsweise
kann solch ein Startsignal von dem Anwendungsmanager empfangen werden, wenn
ein neues Programm beginnt, oder wenn ein Benutzer eine Taste auf
der Fernbedienung des Fernsehers drückt. Für einige Dienste können die
Anwendungen automatisch starten, wenn sie abgestimmt werden. Der
Anwendungsmanager ruft dann das Start-Anwendungsverfahren auf, wie es in der Anwendungs- Schnittstelle, wie
beim Block 1406 gezeigt, bereitgestellt wird. Die Anwendung
führt ihren Dienst
aus und tritt in den aktiven Zustand beim Block 1408 ein.
-
Die
vorliegende Erfindung kann in einer Vielzahl von Situationen angewandt
werden. Ein Beispiel besteht darin, dass eine Aktien-Laufschrift
am Fuße eines
Monitors (beispielsweise eines Fernsehbildschirms) auf verschiedenen
Kanälen
angezeigt wird. Die Aktien-Information kann von einem Empfänger von
einem Rundfunkdienst oder einem Rück-Kanal zu einem zentralen
Server oder Sender erzielt werden (beispielsweise über ein
Modem, Kabel oder eine andere Verbindung zu dem Internet). Unter
der Annahme, dass die Aktien-Laufschrift-Anwendung sich nach der
Initialisierung in dem Pausenzustand befindet, drückt ein
Benutzer eine Taste auf der Fernbedienung des Fernsehers, was dem
Anwendungsmanager signalisiert, die Aktien-Laufschrift-Anwendung zu starten.
Der Anwendungsmanager ruft das Start-Anwendungsverfahren für die Aktien-Laufschrift-Anwendung
auf. Der Anwendungsmanager nimmt an diesem Punkt an, dass die Anwendung
ihren Dienst ausführt.
Beim Empfang des Startsignals erzeugt die Aktien-Laufschrift-Anwendung
einen neuen Thread, der den Rück-Kanal öffnet, um
die Aktienquoten zu empfangen. Die Aktien-Laufschrift-Anwendung
befindet sich nun in dem aktiven Zustand.
-
Während sie
sich in dem aktiven Zustand befindet, fährt die Aktien-Laufschrift-Anwendung
fort, die Aktienquoten anzuzeigen. Infolge der Umstände außerhalb
der Steuerung der Anwendung kann jedoch die Aktien-Laufschrift-Anwendung
nicht länger in
der Lage sein, aktualisierte Aktienquoten zu empfangen. Unter diesen
Umständen
kann die Anwendung entscheiden, mit der Anzeige der häufigsten Aktienquoten,
die ihr zur Verfügung
stehen, fortzufahren. Nach einer Zeitperiode kann jedoch die Anwendung
nach wie vor nicht in der Lage sein, den Rück-Kanal zu öffnen. Die
Anwendung kann von daher entscheiden, dass die Quoten, die sie anzeigt,
zu alt sind, um dargestellt zu werden, und dass sie nicht länger ihren
Dienst ausführen
kann. Die Anwendung kann dann auswählen, sich selbst aus dem aktiven Zustand
zu nehmen, indem das Pausenverfahren an dem Anwendungsumgebungs-Objekt
aufgerufen wird, um diese Änderung
dem Anwendungsmanager zu signalisieren. Darüber hinaus kann die Anwendung
zu diesem Zeitpunkt oder zu einer späteren Zeit entscheiden, dass
sie nicht länger
eine Möglichkeit der
Ausführung
ihres Dienstes hat, so dass sie entscheidet, dass sie beendet werden
sollte. Die Anwendung führt
eine gewisse Reinigung durch, die die Betriebsmittel, welche nicht
länger
von der Anwendung erfordert werden, freigibt. Die Anwendung endet dann
und ruft das Löschungsverfahren
an dem Anwendungsumgebungs-Objekt auf, um dem Anwendungsmanager
zu signalisieren, dass sie in den gelöschten Zustand eingetreten
ist. Dann führt
der Anwendungsmanager die entsprechende Reinigung dieser Anwendung
durch.
-
Die
vorliegende Erfindung kann auf jedem geeigneten Computersystem implementiert
sein. 15 zeigt ein typisches Allzweck-Computersystem 1502,
welches zur Implementierung der vorliegenden Erfindung geeignet
ist. Das Computersystem kann irgendeine geeignete Form annehmen.
Beispielsweise kann das Computersystem in einem Digital-Fernsehempfänger oder
in einer Set-Top-Box integriert sein.
-
Das
Computersystem 1530, oder im einzelnen die CPUs 1532,
kann bzw. können
ausgelegt sein, eine virtuelle Maschine zu unterstützen, wie
es für
den Fachmann zu verstehen ist. Das Computersystem 1502 weist
eine Anzahl von Prozessoren 1504 (ebenso als zentrale Verarbeitungseinheiten oder
CPUs bezeichnet) auf, die an Speichervorrichtungen gekoppelt sein
können,
welche primäre
Speichervorrichtungen 1506 (typischerweise einen Festwertspeicher
oder ROM) und primäre
Speichervorrichtungen 1508 (typischerweise einen Direkt-Zugriffsspeicher
oder RAM) enthalten. Wie es aus dem Stand der Technik bekannt ist,
dient der Festwertspeicher ROM dazu, Daten und Anweisungen unidirektional
zu den CPUs 1504 zu übertragen,
während der
Direkt-Zugriffsspeicher RAM in typischer Weise dazu verwendet wird,
Daten und Anweisungen in einer bidirektionalen Art und Weise zu übertragen.
Beide primäre
Speichervorrichtungen 1506, 1508 können irgendein
geeignetes computerlesbares Medium enthalten. Die CPUs 1504 können allgemein
irgendeine Anzahl von Prozessoren enthalten.
-
Ein
sekundäres
Speichermedium 1510, welches in typischer Weise eine Massenspeichervorrichtung
ist, kann ebenso bidirektional an die CPUs 1504 gekoppelt
sein und zusätzliche
Datenspeicherkapazität
bereitstellen. Die Massenspeichervorrichtung 1510 ist ein
computerlesbares Medium, das verwendet werden kann, um Programme,
die Computer-Codes, Daten und dergleichen enthalten, zu speichern. In
typischer Weise ist die Massenspeichervorrichtung 1510 ein
Speichermedium, wie etwa eine Hard-Disc, das im allgemeinen langsamer
als primäre
Speichervorrichtungen 1506, 1508 ist.
-
Die
CPUs 1504 können
ebenso an eine oder mehrere Eingabe/Ausgabe-Vorrichtungen 1512 gekoppelt
sein, die Vorrichtungen, wie etwa Video-Monitore, Track Balls, Mäuse, Tastaturen,
Mikrophone, berührungssensitive
Displays, Kartenlesegeräte,
Magnet- oder Papierband-Lesegeräte, Tablets,
Griffel, Sprach- oder Handschrift-Erkenner oder andere wohlbekannte
Eingabe-Vorrichtungen, wie etwa selbstverständlich andere Computer, enthalten
können,
jedoch ist die Erfindung nicht hierauf beschränkt. Letztendlich können die
CPUs 1504 optional an einem Computer oder an ein Telekommunikations-Netzwerk,
beispielsweise ein Internet-Netzwerk oder
ein Intranet-Netzwerk, unter Verwendung einer Netzwerkverbindung,
wie sie allgemein bei 1514 gezeigt wird, gekoppelt sein.
Mit solch einer Netzwerk-Verbindung ist vorgesehen, dass die CPUs 1504 Information
von dem Netzwerk empfangen können,
oder dass sie Information zu dem Netzwerk in dem Fall des Ausführens der
zuvor beschriebenen Verfahrensschritte ausgeben können. Solch
eine Information, welche häufig
als Abfolge von Anweisungen, die unter Verwendung der CPUs 1504 ausgeführt werden
müssen,
dargestellt wird, kann von dem Netzwerk empfangen und zu dem Netzwerk
ausgegeben werden, und zwar beispielsweise in der Gestalt eines
Computer-Datensignals, welches in einer Trägerwelle eingebettet ist.
-
Durch
die Verwendung eines Anwendungsmanagers, um die Ausführung von
jeder Anwendung gemäß einem
Anwendungs-Lebenszyklus
zu laden und zu verwalten bzw. zu steuern, ist die Ausführung einer
Anwendung standardisiert, und Speicher-Betriebsmittel werden effektiv geschont.
Der Anwendungs-Lebenszyklus
wird teilweise implementiert, indem in einer konsistenten Art und
Weise die Zustände,
in die die Anwendung eintreten kann, gesteuert werden. Gemäß einer
Ausführungsform
ist ein Schnittstellen-Definitionsverfahren zum Steuern des Anwendungs-Lebenszyklus
für die
Anwendung sowie für
den Anwendungsmanager vorgesehen. In dieser Art und Weise können die
Anwendung und der Anwendungsmanager Zustandsänderungen, Anforderungen für Zustandsänderungen,
Anforderungen, dass Zustandsänderungen
verzögert
oder gelöscht werden,
sowie andere Zustandsinformation übertragen. Durch die Verwendung
der vorliegenden Erfindung kann eine Anwendung auf verschiedenen
Maschinen zu unterschiedlichen Zeiten ablaufen, die dennoch das
gleiche Ergebnis in einer vorsehbaren Art und Weise erzeugt. Darüber hinaus
ermöglicht die
vorliegende Erfindung, dass der in Zusammenhang mit einer Anwendung
stehende Speicher freigegeben wird, wenn festgestellt wird, dass
die Betriebsmittel nicht länger
benötigt
werden. Unter der Voraussetzung eines begrenzten Umfangs der Speicher-Betriebsmittel in
Digital-Empfängern
und Set-Top-Boxen stellt die Möglichkeit,
Speicher-Betriebsmittel in einer Digital-Fernsehumgebung zu verwalten bzw. zu steuern,
eine deutliche Verbesserung dar.
-
Obwohl
anschauliche Ausführungsformen und
Anwendungen dieser Erfindung hierin gezeigt und beschrieben werden,
sind viele Variationen und Modifikationen möglich, die innerhalb des Konzeptes der
Erfindung verbleiben, und diese Variationen sind für den Fachmann
nach dem Durchlesen dieser Anwendung ersichtlich. Beispielsweise
ist die vorliegende Erfindung so beschrieben, dass sie innerhalb
des Zusammenhangs eines Digital-Fernsehempfängers implementiert ist. Jedoch
kann die vorliegende Erfindung in anderen Zusammenhängen verwendet
werden. Obwohl die vorliegende Erfindung so beschrieben wird, als
sei sie auf einer Java-Plattform implementiert, kann sie darüber hinaus
ebenso auf einer Vielzahl von Plattformen implementiert sein. Ferner sind
die zuvor beschriebenen Prozessblöcke nur beispielhaft. Von daher
kann die Implementierung des Anwendungsmanagers und des Anwendungs-Lebenszyklus unter
Verwendung anderer Prozessblöcke
sowie anderer Datenstrukturen durchgeführt werden. Obwohl sowohl der
Anwendungsmanager als auch die Anwendung so beschrieben werden, dass
sie separate Schnittstellen aufweisen, können darüber hinaus diese Schnittstellen öffentliche
Verfahren aufweisen, die für
alle Anwendung sowie für den
Anwendungsmanager sichtbar sind. Demgemäss sind die vorliegenden Ausführungsformen
als anschaulich und nicht einschränkend zu betrachten, und die
Erfindung ist nicht auf die hierin angegebenen Details beschränkt, sondern
kann innerhalb des Umfangs und der Äquivalente der beigefügten Patentansprüche modifiziert
werden.