-
HINTERGRUND
-
Computervorrichtungen können verschiedene Funktionen ausführen, wie beispielsweise das Ausführen von Anwendungen, das Empfangen von Benutzereingaben und das Ausgeben von Informationen für die Anzeige. So können Computervorrichtungen zum Beispiel Anwendungen ausführen, wie beispielsweise einen E-Mail-Client, einen Reiseassistenten, einen Messaging-Client und dergleichen. Software-Entwickler können derartige Anwendungen in für Menschen lesbaren Quellcode schreiben, der in einen maschinenlesbaren Code kompiliert wird. In einigen Fällen kann ein maschinenlesbarer Code in diskrete ausführbare Komponenten, wie beispielsweise kompilierte Klassen in einer objektorientierten Gestaltung, organisiert sein. Eine Anwendung kann eine oder mehrere ausführbare Komponenten beinhalten, die verschiedene Funktionen implementieren. In einigen verteilten Umgebungen kann eine Benutzer-Computervorrichtung (z. B. ein Smartphone) eine Medienspeicheranwendung verwenden, um nach Anwendungen zu suchen und diese zu installieren, die von einem entfernten Computersystem bereitgestellt werden. Wenn ein Benutzer eine Anwendung in der Medienspeicheranwendung auswählt, um diese auf dem Benutzer-Computergerät zu installieren, sendet das entfernte Computersystem eine einzelne Datei, die alle ausführbaren Komponenten beinhaltet, um die gesamte Funktionalität der Anwendung auszuführen, unabhängig davon, ob der Benutzer tatsächlich alle Funktionen verwendet. Wenn die Anwendung in der Größe wächst, kann die Zeit, die zum Herunterladen und Installieren solcher Anwendungen benötigt wird steigen, wodurch ein Benutzer mehr Zeit für die Installation und Ausführung von Anwendungen aufbringen muss.
-
Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
-
KURZDARSTELLUNG
-
In einigen Beispielen beinhaltet ein Verfahren das Empfangen einer Anforderung zur Ausführung einer bestimmten Funktionalität einer Anwendung durch eine Supervisorkomponente, um eine bestimmte Funktionalität einer Anwendung auszuführen; als Reaktion auf das Ermitteln, dass ein Anwendungscontainer zum Beibehalten installierbarer Unterpakete der Anwendung nicht im Speicher der Computervorrichtung zugeordnet ist, Abrufen einer Anwendungsdefinition von einem ersten Ferncomputersystem durch die Supervisorkomponente, wobei die Anwendungsdefinition eine Vielzahl von Zuordnungen zwischen den installierbaren Unterpaketen der Anwendung und den benutzerdefinierten Identifikatoren definiert; als Reaktion auf die Zuteilung des Anwendungscontainers in den Speicher der Computervorrichtung, Initiieren der speziellen Funktionalität der Anwendung durch die Supervisorkomponente und zumindest teilweise auf einer benutzerdefinierten Kennung der Anforderung; als Reaktion auf das Ermitteln, dass der an der Computervorrichtung ausgeführte Anwendungscontainer zumindest teilweise auf der Anwendungsdefinition und der benutzerdefinierten Kennung basiert, dass ein installierbares UnterPaket für die spezielle Funktionalität durch den Anwendungscontainer nicht an der Computervorrichtung gespeichert wird, dass das installierbare Unterpaket eine Vielzahl von ausführbaren Komponenten von einem zweiten Ferncomputersystem beinhaltet; und Ausführen der speziellen Funktionalität der Anwendung durch den Anwendungscontainer und unter Verwendung der Vielzahl von ausführbaren Komponenten.
-
In einigen Beispielen beinhaltet ein Verfahren das Empfangen einer Anforderung zur Ausführung einer bestimmten Funktionalität einer Anwendung durch eine Supervisorkomponente, um eine bestimmte Funktionalität einer Anwendung auszuführen; als Reaktion auf das Ermitteln, dass ein Anwendungscontainer zum Beibehalten installierbarer Unterpakete der Anwendung nicht im Speicher der Computervorrichtung zugeordnet ist, Abrufen einer Anwendungsdefinition von einem ersten Ferncomputersystem durch die Supervisorkomponente, wobei die Anwendungsdefinition eine Vielzahl von Zuordnungen zwischen den installierbaren Unterpaketen der Anwendung und den benutzerdefinierten Identifikatoren definiert; als Reaktion auf die Zuteilung des Anwendungscontainers in den Speicher der Computervorrichtung, Initiieren der speziellen Funktionalität der Anwendung durch die Supervisorkomponente und zumindest teilweise basierend auf einer benutzerdefinierten Anforderung der Funktionalität der Anwendung; als Reaktion darauf, dass der Anwendungscontainer der Computervorrichtung zumindest teilweise auf der Anwendungsdefinition und der benutzerdefinierten Kennung basiert, dass ein installierbares Unterpaket für die spezielle Funktionalität nicht an der Recheneinrichtung gespeichert wird durch den Anwendungscontainer, dass das installierbare Unterpaket eine Vielzahl von ausführbaren Komponenten von einem zweiten Ferncomputersystem beinhaltet; und Ausführen der speziellen Funktionalität der Anwendung durch den Anwendungscontainer und unter Verwendung der Vielzahl von ausführbaren Komponenten.
-
Ein nichtflüchtiges computerlesbares Speichermedium, das mit Anweisungen kodiert ist, die bei der Ausführung bewirken, dass mindestens ein Prozessor eines Rechengeräts von einer Supervisorkomponente des Rechengeräts eine Anforderung empfängt, eine spezielle Funktionalität einer Anwendung auszuführen; als Reaktion darauf, dass ein Anwendungscontainer zum Beibehalten installierbarer Unterpakete der Anwendung nicht im Speicher der Computervorrichtung zugeordnet ist, Abrufen einer Anwendungsdefinition von einem ersten Ferncomputersystem durch die Supervisorkomponente, wobei die Anwendungsdefinition eine Vielzahl von Zuordnungen zwischen den installierbaren Unterpaketen der Anwendung und den benutzerdefinierten Identifikatoren definiert; als Reaktion auf die Zuordnung des Anwendungscontainers in den Speicher der Computervorrichtung, Initiieren der speziellen Funktionalität der Anwendung durch die Supervisorkomponente und zumindest teilweise basierend auf einer benutzerdefinierten Anforderung der Funktionalität der Anwendung; als Reaktion darauf, dass der Anwendungscontainer der Computervorrichtung zumindest teilweise auf der Anwendungsdefinition und der benutzerdefinierten Kennung basiert, dass ein installierbares Unterpaket für die spezielle Funktionalität nicht an der Recheneinrichtung gespeichert wird durch den Anwendungscontainer, dass das installierbare Unterpaket eine Vielzahl von ausführbaren Komponenten von einem zweiten Ferncomputersystem beinhaltet; und Ausführen der speziellen Funktionalität der Anwendung durch den Anwendungscontainer und unter Verwendung der Vielzahl von ausführbaren Komponenten.
-
Die Details von einem oder mehreren Beispielen der Offenbarung sind in den zugehörigen Zeichnungen und der Beschreibung nachfolgend ausgeführt. Andere Merkmale, Gegenstände und Vorteile der Erfindung werden aus der Beschreibung und den Zeichnungen und aus den Ansprüchen ersichtlich.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein konzeptionelles Diagramm, das eine exemplarische Computervorrichtung mit Anwendungscontainern zum dynamischen Laden von installierbaren Unterpaketen gemäß den Techniken dieser Offenbarung darstellt.
-
2 ist ein Blockdiagramm, das weitere Einzelheiten einer Computervorrichtung gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung veranschaulicht.
-
3 ist ein Ablaufdiagramm, das exemplarische Operationen einer Computervorrichtung mit Anwendungscontainern zum dynamischen Laden von installierbaren Unterpaketen gemäß den Techniken dieser Offenbarung veranschaulicht.
-
4 ist ein konzeptionelles Diagramm eines Anwendungscontainern zum dynamischen Laden von installierbaren Unterpaketen mit entsprechenden Bibliotheken gemäß den Techniken dieser Offenbarung.
-
5 ist ein Flussdiagramm, das exemplarische Operationen einer Computervorrichtung mit Anwendungscontainern zum dynamischen Laden von installierbaren Unterpaketen gemäß den Techniken dieser Offenbarung veranschaulicht.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Im Allgemeinen stellen Techniken der vorliegenden Offenbarung einen Anwendungscontainer bereit, der die installierbaren Unterpakete in einer Stückzahl, auf Anforderung, dynamisch lädt, da Funktionalitäten, die durch die installierbaren Teilpakete bereitgestellt werden, von einer Anwendung benötigt werden. Ein Anwendungscontainer kann eine eigenständige Ausführungsumgebung für eine Anwendung bereitstellen, die aus mehreren Unterpaketen bestehen kann und jedes Unterpaket eine oder mehrere ausführbare Komponenten umfasst. Als ein Beispiel kann ein Softwareentwickler eine Anwendung (z. B. eine Navigationsanwendung) mit diskreten Sätzen von Funktionalität entwerfen. Die Navigationsanwendung kann eine Turn-by-Turn-Navigationsbenutzeroberfläche, eine interessierende Benutzeroberfläche (z. B. Anzeigen von Details für einen interessierenden Punkt auf einer Karte) und eine Einstellungsbenutzeroberfläche beinhalten. Der Softwareentwickler kann die Anwendung mit drei verschiedenen Unterpaketen entwerfen, wobei jedes Unterpaket einen Satz von ausführbaren Komponenten beinhaltet, um die Funktionalität für die jeweilige Benutzerschnittstelle zu implementieren.
-
Während alle Unterpakete für die Anwendung gemeinsam groß sein können, kann ein Anwendungscontainer für die Anwendung nur diejenigen Unterpakete abrufen, installieren und ausführen, die erforderlich sind, um die von einem Benutzer angeforderte Funktionalität bereitzustellen. Daher muss bei der Installation und/oder Ausführung der Anwendung nur ein Teil der Unterpakete für die Anwendung lokal an der Computervorrichtung für die auszuführende Anwendung vorliegen. Wenn ein Benutzer zusätzliche Funktionalität für die Anwendung anfordert, kann der Anwendungscontainer automatisch die benötigten Unterpakete abrufen, die die angeforderte Funktionalität bereitstellen. Auf diese Weise können Anwendungen schneller installiert und geladen werden, da nicht der gesamte Satz von Unterpaketen für die Anwendung abgerufen und installiert werden muss, wenn nur ein Teil der Funktionalität der Anwendung benötigt wird. Darüber hinaus kann in einigen Beispielen ein Anwendungscontainer das Aktualisieren einer Containerlaufzeit bereitstellen, ohne dass eine Aktualisierung des Betriebssystems oder des Laufzeitsystems der Computervorrichtung erforderlich ist.
-
1 ist ein konzeptionelles Diagramm, das eine exemplarische Computervorrichtung 100 mit Anwendungscontainern 102A–102C („Anwendungscontainer 102”) zum dynamischen Laden installierbarer Unterpakete gemäß den Techniken dieser Offenbarung darstellt. Beispiele der Computervorrichtung 100 können tragbare oder mobile Vorrichtungen wie beispielsweise Mobiltelefone (einschließlich Smartphones), Laptops, Tablet-Computer, tragbare Computergeräte, beispielsweise Smart-Uhren oder computergesteuerte Brillen, intelligente Fernsehplattformen, Kameras, Personal Digital Assistants (PDAs) usw. beinhalten. In einigen Beispielen kann die Computervorrichtung 102 stationäre Computergeräte, wie beispielsweise Desktop-Computer, Server, Großrechner usw. beinhalten.
-
Wie in 1 gezeigt, beinhaltet die Computervorrichtung 100 den Anwendungscontainer 102, die Systemlaufzeit 126, das Betriebssystem 136 und die Hardwarekomponenten 138. Die Computervorrichtung 100 kann über ein Netzwerk 140 und den Kommunikationsverbindungen 148A–148B mit einem oder mehreren anderen entfernten Computersystemen 142A–142 („Remotecomputersysteme 142”) kommunizieren. Wie in 1 gezeigt, veranschaulicht das Netzwerk 140 ein beliebiges öffentliches oder privates Kommunikationsnetz, beispielsweise ein Mobilfunknetz, Wi-Fi und/oder einen anderen Netzwerktyp zum Übertragen von Daten zwischen Computergeräten. Die Computervorrichtung 100 und die Ferncomputersysteme 142 können Daten über das Netzwerk 140 senden und empfangen, wobei eine beliebige geeignete Kommunikationstechnik verwendet wird. So kann beispielsweise die Computervorrichtung 100 unter Verwendung der Kommunikationsverbindung 148A operativ mit dem Netzwerk 140 gekoppelt sein. Das Ferncomputersystem 142A kann mit dem Netz 140 über eine Kommunikationsverbindung 148B operativ gekoppelt sein. Das Netzwerk 140 kann Netzwerk-Hubs, Netzwerk-Switches, Netzwerk-Router usw. beinhalten, die operativ miteinander gekoppelt sind, wodurch der Austausch von Informationen zwischen der Computervorrichtung 102 und den Remote-Computersystemen 142 bereitgestellt wird. In einigen Beispielen können die Kommunikationsverbindungen 138A–138B Ethernet-, ATM- oder andere Netzwerkverbindungen sein. Derartige Verbindungen können drahtlose und/oder drahtgebundene Verbindungen sein.
-
Die Hardwarekomponenten 138 können Computerprozessoren, Kommunikationseinheiten (z. B. Modems, Netzwerkschnittstellensteuerungen und dergleichen), Eingabekomponenten, Ausgabekomponenten, eine präsenzempfindliche Anzeige, flüchtige und nichtflüchtige Speicher und eine Stromquelle sein, um nur einige Beispiele zu nennen. Eine weitere Beschreibung von Hardware-Komponenten 138 ist mit Bezug auf 2 vorgesehen. Das Betriebssystem 136 kann auf Hardwarekomponenten 138 ausgeführt werden und Hardware- und Softwarekomponenten der Computervorrichtung 100 verwalten. So kann beispielsweise das Betriebssystem 136 eine Speicherverwaltung, eine Prozessterminierung und eine nichtflüchtige Speicherverwaltung durchführen. Das Betriebssystem 136 kann auch Netzwerk- und Sicherheitsdienste für Anwendungen bereitstellen, die an der Computervorrichtung 100 ausgeführt werden. Das Betriebssystem 136 kann auch mehr oder weniger Funktionen ausführen, als vorstehend beschrieben.
-
Das Laufzeitsystem 126 implementiert ein Ausführungsmodell für Anwendungen, die gemäß einer bestimmten Programmiersprache erstellt sind, in der die Anwendungen geschrieben und gebaut oder kompiliert werden. Das Laufzeitsystem 126 kann eine oder mehrere Bibliotheken und/oder Dienste beinhalten, die für Anwendungscontainer 102 während der Ausführung zugänglich sind. Wie in dieser Offenbarung weiter beschrieben, kann jeder Anwendungscontainer 102 einer bestimmten Anwendung entsprechen. Das Laufzeitsystem 126 kann Threadverwaltungsdienste, eine Bildschirmdarstellung und eine Benutzeroberflächen-Wiedergabekomponente und inter- und intra-anwendungsbezogene Nachrichtendienste beinhalten, um nur einige Beispieldienste zu nennen. Die Anwendungscontainer 102 können über Anwendungsprogrammierschnittstellen (API-Application Programming Interfaces) auf die Dienste zugreifen, die von den Laufzeitkomponenten 128 exponiert werden. In einigen Beispielen kann das Laufzeitsystem 126 als ein oder mehrere Prozesse und/oder Threads ausgeführt werden. Einer oder mehrere der Prozesse und/oder Threads können mit oder ohne Betriebssystem-Rechten ausgeführt werden.
-
Wie in 1 gezeigt, kann das Laufzeitsystem 126 Laufzeitkomponenten 128 beinhalten. Jede einzelne Laufzeitkomponente kann mit einem oder mehreren Prozessen und/oder Threads implementiert werden. In einigen Beispielen kann jede einzelne Laufzeitkomponente einen benutzerdefinierten Satz an Funktionalität bereitstellen. So kann beispielsweise eine Benutzeroberflächen-Wiedergabekomponente mit einer oder mehreren Bibliotheken implementiert sein, die Benutzeroberflächenelemente (z. B. Tasten, Listen, Bilder, Eingabefelder und dergleichen) und ihre entsprechenden Verhaltensweisen definieren. Die Benutzeroberflächen-Wiedergabekomponente kann APIs bereitstellen, die von Anwendungscontainern 102 aufgerufen werden, um die Benutzeroberflächenelemente in einer grafischen Benutzerschnittstelle zu rendern.
-
Die Supervisorkomponente 128A ist in den Laufzeitkomponenten 128 beinhaltet. Die Supervisorkomponente 128A stellt inter- und intra-anwendbare Nachrichtendienste bereit. Die Supervisorkomponente 128A beinhaltet Message-Broker 130, der auf von den Anwendungscontainern 102 erzeugte Nachrichten hin überwacht und Aktionen für den sendenden Anwendungscontainer oder einen oder mehrere andere Anwendungscontainer ausführt. Die Supervisorkomponente 128A kann die erste Priorität oder die erste Möglichkeit aufweisen, jede Nachricht (z. B. eine Nachricht, die einen URI als eine benutzerdefinierte Kennung beinhaltet) zu senden. So kann der Nachrichtenvermittler 130 in einigen Beispielen eine zusätzliche Verarbeitung für Nachrichten bereitstellen, wie zum Beispiel das Zuweisen von Anwendungscontainern aus dem Anwendungscontainerpool 132, das Durchsetzen der Sicherheit für Nachrichten und das Protokollieren von Nachrichten, um nur einige Beispiele zu nennen. Als ein Beispiel kann der Anwendungscontainer 102A eine Nachricht erzeugen, um von einer ersten Benutzeroberfläche zu einer zweiten Benutzeroberfläche innerhalb derselben Anwendung zu navigieren. Der Anwendungscontainer 102A kann die Nachricht an den Message-Broker 130 senden, der eine Nachrichtentabelle 134 mit einem Satz von Filtern beinhaltet, wobei jeder Filter eine oder mehrere Bedingungen und eine oder mehrere entsprechende Aktionen aufweist. Wenn der Inhalt der Nachricht einer Bedingung eines Filters entspricht, kann der Nachrichtenvermittler 130 die entsprechende Aktion ausführen, wie beispielsweise Ausführen von Befehlen zum Ausgeben der zweiten graphischen Benutzerschnittstelle. In einigen Beispielen können derartige Nachrichten, die vorstehend beschrieben wurden, intern von dem Router 112 weitergeleitet werden, ohne die Nachrichten an den Message-Broker 130 weiterzuleiten.
-
Wie vorstehend beschrieben, kann jeder der Anwendungscontainer 102 einer bestimmten Anwendung entsprechen. Die Anwendungen können unterschiedliche Funktionen beinhalten, um Operationen auf der Computervorrichtung 100 durchzuführen. So können zum Beispiel Anwendungen eine E-Mail-Anwendung, Textnachrichtenübermittlungs-Anwendung, Nachrichtenübermittlungsanwendung, Wetter-Anwendung, Videokonferenz-Anwendung, Social Networking-Anwendung, Wetteranwendung, Börsenanwendung, Notfallalarm-Anwendung beinhalten, um nur einige Beispiele zu nennen.
-
Wie in 1 gezeigt, stellt der Anwendungsbehälter 102A eine Ausführungsumgebung und unterstützende Dienste bereit, um die Ausführung der ausführbaren Komponenten 108 einer Anwendung zu steuern. Die Anwendungscontainer 102 können als separate Prozesse im Betriebssystem 136 ausgeführt werden. In einigen Beispielen beinhaltet der Anwendungscontainer 102A eine Nachrichtenschnittstelle 115. Der Router 112 kann Nachrichten vom Laufzeitsystem 126 über die Nachrichtenübermittlungsschnittstelle 115 empfangen und das Laufzeitsystem 126 kann Nachrichten von den ausführbaren Komponenten 108 und dem Router 112 über die Nachrichtenübermittlungsschnittstelle 115 empfangen. Die Programmlogik für den Anwendungscontainer 102A kann in ausführbaren Komponenten 108 implementiert sein. Eine ausführbare Komponente kann eine logische Gruppierung von maschinenausführbarem Code sein. So kann beispielsweise bei einem objektorientierten Gegenstand eine einzelne ausführbare Komponente eine einzelne, kompilierte Klassendatei sein, die maschinenausführbaren Code beinhaltet.
-
Der Anwendungscontainer 102A kann ein Behälter für eine oder mehrere Unterpackungen 104 sein. In einigen Beispielen beinhaltet ein Unterpaket zwei oder mehr ausführbare Komponenten 108A–108C („ausführbare Komponenten 108”). Ein Unterpaket kann Ressourcen (z. B. Bilder, Texte, Videos oder andere nicht kompilierte Daten), Sicherheits- und/oder Signierinformationen, Versionsinformationen und/oder Abhängigkeitsinformationen oder andere Informationen für eine Anwendung beinhalten. Ein Softwareentwickler kann eine Anwendung entwerfen, die aus mehreren, benutzerdefinierten Unterpaketen besteht. Jedes benutzerdefinierte Unterpaket kann einen Satz von ausführbaren Komponenten beinhalten, die zusammen einen diskreten Satz an Funktionalität bereitstellen. So kann beispielsweise ein Softwareentwickler eine Navigationsanwendung mit mehreren unterschiedlichen Benutzerschnittstellen entwerfen. Jede Benutzerschnittstelle kann einen unterschiedlichen Satz von Benutzerschnittstellenelementen und entsprechende Verhaltensweisen beinhalten. Als solche kann jede Benutzerschnittstelle mit einem bestimmten Satz von ausführbaren Komponenten implementiert werden. So kann zum Beispiel die Navigationsanwendung kann eine Turn-by-Turn(schaltbare)-Navigationsbenutzeroberfläche, eine interessierende Benutzeroberfläche (z. B. Anzeigen von Details für einen interessierenden Punkt auf einer Karte) und eine Einstellungsbenutzeroberfläche beinhalten. Der Softwareentwickler kann die Anwendung mit drei verschiedenen Unterpaketen entwerfen, wobei jedes Unterpaket einen Satz von ausführbaren Komponenten beinhaltet, um die Funktionalität für die jeweilige Benutzerschnittstelle zu implementieren.
-
Der Anwendungscontainer 102A kann eine Containerlaufzeit 124 beinhalten. Die Containerlaufzeit 124 kann eine oder mehrere Bibliotheken und/oder eine oder mehrere Anwendungsprogrammierschnittstellen (application programming interfaces – APIs) für Dienste und/oder Funktionen beinhalten, die von Bibliotheken innerhalb der Containerlaufzeit 124, des Laufzeitsystems 126 und/oder des Betriebssystems 136 bereitgestellt werden. Als solches kann die Containerlaufzeit 124 eine sichere In-Prozess-API-Schicht bereitstellen. Durch Steuern des Anwendungscontainers und der Containerlaufzeit kann das Laufzeitsystem 126 verifizieren, dass Anwendungscontainer und Containerlaufzeit nicht manipuliert worden sind und daher eine Laufzeitlogik für ein empfindliches Verhalten bereitstellen. So könnte zum Beispiel eine Anwendung, die den Zugriff auf eine Gerätekennung eines Benutzers (z. B. eine global eindeutige Kennung des Gerätes) anfordert, erforderlich sein, um über APIs der Containerlaufzeit aufzurufen, die dann mit der Supervisorkomponente 128A überprüfen können, um sicherzustellen, dass dies ein zulässiges Verhalten ist. Auf diese Weise kann die Containerlaufzeit 124 eine Garantie dafür erzwingen, dass diese Prüfungen verschiedene Operationen ausführen, da solche Operationen nur über APIs der Containerlaufzeit 124 erfolgen können. Die Containerlaufzeit 124 kann eine Schicht zum Iterieren auf APIs bereitstellen, die eine Plattformkoordination erfordern. So könnte beispielsweise das Unterpaket erklären, dass es bestimmte Daten benötigt, wie beispielsweise die Position, und die Containerlaufzeit 124 könnte die Position parallel mit dem Laden von ausführbaren Komponenten für ein bestimmtes Unterpaket empfangen und den Speicherort als Argument beim Start einer Anwendung bereitstellen.
-
Wie nachstehend ausführlicher beschrieben wird, können die Anwendungscontainer 102 ermöglichen, eine Anwendung mit separaten Unterpaketen für separate Sätze an Funktionalität zu entwerfen, können die Anwendungscontainer eine Anwendung ermöglichen, die an der Computervorrichtung 100 ausgeführt wird, ohne dass alle ihre jeweiligen Ausführungskomponenten für alle ihre Unterpakete lokal auf der Computervorrichtung 100 resident vorhanden sind. Auf diese Weise erfordert die anfängliche Ausführung einer Anwendung nicht das Abrufen und/oder die Installation aller Unterpakete, sondern lediglich eine Teilmenge von Unterpaketen, die ausführbare Komponenten beinhalten, die die angeforderte Funktionalität implementieren. Darüber hinaus kann durch das Verpacken mehrerer, ausführbarer Komponenten in einem einzelnen Unterpaket die Wiedergewinnung und/oder Installation von ausführbaren Komponenten auf Basis eines Unterpakets entsprechend der angeforderten Funktionalität (z. B. zum Rendern einer bestimmten Benutzerschnittstelle) stattfinden und das Installieren ausführbarer Komponenten auf Basis von ausführbaren Komponenten, was eine schlechtere Leistung und/oder eine schlechtere Benutzererfahrung zur Folge haben kann.
-
Wie vorstehend beschrieben, kann jede Anwendung mit einem Anwendungscontainer ausgeführt werden, der eine oder mehrere ausführbare Komponenten beinhaltet, die die Operationen der Anwendung definieren. Der Anwendungscontainer 102A beinhaltet einen Router 112, der Nachrichten sendet und empfängt, die das Verhalten der Anwendung ändern und/oder die Anwendung veranlassen, eine oder mehrere Operationen mit ausführbaren Komponenten 108 und der Nachrichtenschnittstelle 115 durchzuführen. Der Router 112 kann zum Beispiel eine Nachricht empfangen, die die Ausführung einer oder mehrerer Operationen anfordert. Der Router 112 kann basierend auf dem Inhalt der Nachricht ermitteln, ob ein Unterpaket, das ausführbare Komponenten beinhaltet, um die eine oder mehrere Operationen durchzuführen, lokal gespeichert ist oder auf andere Weise auf die Computervorrichtung 100 zugreifen kann. Der Inhalt der Nachricht kann eine Kennung, wie beispielsweise einen Uniform Resource Identifier (URI-einheitliche Kennung für Ressourcen) beinhalten, der dem Unterpaket entspricht. Wenn das Unterpaket lokal gespeichert ist oder ansonsten auf dem Computergerät 100 zugänglich ist, identifiziert der Router 112 eine oder mehrere ausführbare Komponenten, um die Operationen basierend auf den Inhalten der Nachricht durchzuführen. In einigen Beispielen kann die Nachricht zusätzliche Attribute (z. B. eine Kategorie zum Starten der Benutzerschnittstelle, einen MIME-Typ von Daten, eine explizite Komponentenklasse zur Ausführung) oder Daten (z. B. Benutzerdaten oder maschinengenerierte Daten) beinhalten, die ferner die eine oder mehrere durchzuführende Operationen angeben. Als solches können die einen oder die mehreren ausführbaren Komponenten, die durch den Router 112 identifiziert werden, die eine oder die mehreren Operationen basierend auf den zusätzlichen Attributen oder Daten durchführen.
-
Wie vorstehend beschrieben, müssen nicht alle Unterpakete für eine bestimmte Anwendung lokal an der Computervorrichtung 100 resident sein, um die Anwendung auszuführen. Um festzustellen, ob ein Unterpaket für eine bestimmte Funktionalität resident ist oder anderweitig auf das Computergerät 100 zugreifen kann, kann der Router 112 eine Suche nach der Anwendungsdefinition 116 durchführen. Die Anwendungsdefinition 116 kann im Allgemeinen Zuordnungen zwischen benutzerdefinierten Kennungen (z. B. URIs, Strings, Ganzzahlen oder jede andere geeignete Kennung) und Unterpakete definieren, die spezifische Funktionen für die Anwendung angeben. Die Anwendungsdefinition 116 beinhaltet diese Zuordnungen in der Routing-Tabelle 118, die Zuordnungen zwischen den benutzerdefinierten Kennungen 120A–120N („benutzerdefinierte Kennungen 120”) und den Unterpaket-Kennungen 122A–122N („Unterpaket-Kennung 122”) beinhalten. Wenn der Router 112 eine Nachricht mit einer benutzerdefinierten Kennung empfängt, um Funktionalität unter Verwendung eines bestimmten Unterpakets auszuführen, kann der Router 112 eine Suche in der Routertabelle 118 durchführen. Wenn der Router 112 ermittelt, dass die benutzerdefinierte Kennung 120A beispielsweise der benutzerdefinierten Kennung der Nachricht entspricht, kann der Router 112 ermitteln, ob das Unterpaket 104A, das der Unterpaket-Kennung 122A entspricht, auf der Computervorrichtung 100 residiert. Da das Unterpaket 104A auf der Computervorrichtung 100 residiert, führt der Router 112 einen Anruf zum Unterpaket 104A auf der Basis der Nachricht aus oder sendet die Nachricht zum Unterpaket 104A, das eine oder mehrere Operationen unter Verwendung ausführbarer Komponenten 108A ausführt.
-
Wie vorstehend beschrieben, muss der nicht der gesamte Satz von Unterpaketen für eine Anwendung lokal auf der Computervorrichtung 100 gespeichert werden, wodurch die anfängliche Installation und/oder anfängliche Ausführung einer Anwendung an der Computervorrichtung 100 weniger Zeit erfordert, als wenn die gesamte Anwendung von einem entfernten Computersystem heruntergeladen, installiert und durch die Computervorrichtung 100 ausgeführt werden muss. Als solches kann ein Benutzer eine größere Ansprechempfindlichkeit aus der Anwendung und/oder Leistung für das Verhalten der Anwendung erfahren.
-
Wie im Beispiel von 1 gezeigt, ein Benutzer wünschen, zunächst die Navigationsanwendung wie oben beschrieben zu installieren und auszuführen. Zunächst kann keines der Unterpakete oder die Anwendungsdefinition für die Navigationsanwendung in der Computervorrichtung 100 gespeichert werden. Der Benutzer kann eine Benutzereingabe für die Computervorrichtung 100 bereitstellen, um zunächst ein Symbol in einer Benutzeroberfläche auszuwählen, die durch das Betriebssystem 136 bereitgestellt wird, das der Kartenanwendung entspricht. Alternativ kann der Benutzer die Kartenanwendung in einer Medienspeicheranwendung (nicht gezeigt) auswählen, die an der Computervorrichtung 100 ausgeführt wird und mit dem entfernten Computersystem 142 kommuniziert, um Unterpakete und Anwendungsdefinitionen abzurufen. In jedem Fall empfängt der Nachrichtenvermittler 130 der Supervisorkomponente 128A eine Nachricht von dem Betriebssystem 136 oder der Medienspeicheranwendung, die die Ausführung einer bestimmten Funktionalität für die Navigationsanwendung anfordert. Da die Navigationsanwendung noch nicht installiert ist, wird für die jeweilige Funktionalität die Standardoder Hauptbenutzeroberfläche für die Anwendung angezeigt.
-
Die Supervisorkomponente 128A kann ermitteln, ob ein Anwendungscontainer bereits im Speicher der Computervorrichtung 100 für die Navigationsanwendung basierend auf dem Inhalt der Nachricht zugewiesen worden ist. So kann beispielsweise der Inhalt der Nachricht eine eindeutige Kennung der Navigationsanwendung beinhalten, wie beispielsweise einen Namen für die Anwendung. Als Reaktion darauf, dass die Supervisorkomponente 128A noch keinen Anwendungscontainer für die Navigationsanwendung zugeordnet hat, kann die Supervisorkomponente 128A einen Anwendungscontainer 102A aus dem Anwendungscontainerpool 132 zuordnen. Der Anwendungscontainerpool 132 kann einen Satz von Prozessen beinhalten, die für die Ausführung von Anwendungen reserviert und verwendbar sind. In einigen Beispielen kann die Supervisorkomponente 128A mit dem Betriebssystem 136 kommunizieren, um ein neues Verfahren für den Anwendungscontainer 102A zu erzeugen.
-
Die Supervisorkomponente 128A kann bestimmen, dass die Navigationsanwendung noch nicht installiert ist und eine Anwendungsdefinition von einem oder mehreren Remote-Computersystemen 142 anfordern. So kann beispielsweise die Supervisorkomponente 128A eine Nachricht an das Ferncomputersystem 142A senden, wobei die Nachricht eine Kennung für die Navigationsanwendung beinhaltet, die in den Ferncomputersystemen 142 global einzigartig ist. Das Ferncomputersystem 142A wählt nach dem Empfang der Nachricht die Anwendungsdefinition 116 aus den Anwendungsdefinitionen 144 aus und sendet die Anwendungsdefinition 116 an die Computervorrichtung 100. Die Supervisorkomponente 128A empfängt die Anwendungsdefinition 116, die in dem Anwendungscontainer 102A beinhaltet oder zugänglich sein kann.
-
Die Supervisorkomponente 128A veranlasst den Nachrichtenvermittler 130, eine Nachricht an den Anwendungscontainer 102A zu senden, um die Standard- oder Hauptbenutzeroberfläche für die Anwendung anzuzeigen. Insbesondere kann die Nachricht eine benutzerdefinierte Kennung beinhalten, die einem Unterpaket mit Funktionalität entspricht, um die Standard- oder Hauptbenutzeroberfläche für die Anwendung anzuzeigen. In einigen Beispielen empfängt (oder erzeugt) der Nachrichtenvermittler 130 die benutzerdefinierte Kennung auf der Basis von Informationen, die von der Medienspeicheranwendung oder von einer Bootstrapping-Funktionalität empfangen werden, die dem Symbol für die Kartenanwendung zugeordnet ist, die anfänglich vom Benutzer ausgewählt wurde. Die Bootstrapping-Funktionalität kann das Senden der benutzerdefinierten Kennung an den Nachrichtenmakler 130 beinhalten, ist aber nicht darauf beschränkt.
-
Der Router 112 empfängt die Nachricht mit der benutzerdefinierten Kennung über die Nachrichtenübermittlungsschnittstelle 115. In diesem Beispiel von 1 ist die benutzerdefinierte Kennung 120A. Basierend auf der benutzerdefinierten Kennung ermittelt der Router 112, dass das Unterpaket für die Unterpaketkennung 122A, das der benutzerspezifischen Kennung 120A entspricht, nicht lokal an der Computervorrichtung 100 gespeichert wird. Der Router 112 kann eine Nachricht unter Verwendung der Containerlaufzeit 124 und/oder des Laufzeitsystems 126 an das Ferncomputersystem 142A senden, um das Unterpaket für die Unterpaketkennung 122A anzufordern. So kann beispielsweise die Nachricht, die durch die Containerlaufzeit 124 und/oder das Laufzeitsystem 126 an das entfernte Computersystem 142A gesendet wird, die Unterpaketkennung 122A beinhalten. Das Ferncomputersystem 142A kann ein Unterpaket an die Computervorrichtung 100 senden, die ausführbare Komponenten zum Anzeigen der Standard- oder Hauptbenutzeroberfläche der Navigationsanwendung umfasst.
-
Der Router 112 kann als Reaktion auf das Ermitteln, dass das Unterpaket für die Unterpaket-Kennung 122A nicht lokal gespeichert ist, bewirken, dass der Lebenszyklus-Manager 110 über die Rückrufschnittstelle 113 auf Systemlebenszyklusaufrufe hört, in denen die Lebenszyklusaufrufe durch das Laufzeitsystem 126 ausgegeben werden. Lebenszyklusaufrufe können das Starten einer Anwendung, das Anhalten einer Anwendung, das Neustarten einer Anwendung oder das Beenden einer Anwendung beinhalten, um nur einige Beispiele zu nennen. Der Lebenszyklusmanager 110 kann die Lebenszyklusanrufe puffern, die von den ausführbaren Komponenten des Unterpakets 104A ausgeführt werden, sobald die Computervorrichtung 100 das Unterpaket 104A vom Ferncomputersystem 142A abgerufen hat. Sobald das Unterpaket 104A durch die Computervorrichtung 100 abgerufen worden ist, kann der Lebenszyklusmanager 110 jeden der gepufferten Lebenszyklusaufrufe an das Unterpaket 104A senden.
-
Wie im Beispiel von 1 gezeigt, sendet der Lebenszyklusmanager 110, nachdem der Lebenszyklusmanager 110 ermittelt hat, dass die Computervorrichtung 100 lokal das abgelegte und gespeicherte Unterpaket 104A abgerufen hat, einen Anruf oder ruft andererseits die Ladevorrichtung 106 auf, eine oder mehrere der ausführbaren Komponenten 108 in den Speicher der Computervorrichtung 100 zu laden, um die anfänglich angeforderte spezielle Funktionalität auszuführen, z. B. die Standard- oder Hauptbenutzeroberfläche für die Anwendung anzuzeigen. In einigen Beispielen ist der Lader 106 dafür verantwortlich, ausführbare Komponenten in den Speicher zu laden. In einigen Beispielen kann der Lader 106 mehrere Lader darstellen, wobei jeder Lader für das Laden einer unterschiedlichen ausführbaren Komponente in den Speicher verantwortlich ist. Der Lader 106 kann für eine bestimmte ausführbare Komponente entsprechende Bibliotheken lokalisieren, die von der bestimmten ausführbaren Komponente verwendet werden und beliebige derartige Bibliotheken in den Speicher laden, sodass die Bibliotheken für die jeweilige ausführbare Komponente zugreifen können. Der Lebenszyklusmanager 110 kann auch die gepufferten Lebenszyklusanrufe an eine oder mehrere der ausführbaren Komponenten 108 senden. Beim Empfangen der gepufferten Lebenszyklusanrufe veranlasst die eine oder die mehreren ausführbaren Komponenten 108, dass die Computervorrichtung 100 die Standard- oder Hauptbenutzeroberfläche für die Anwendung anzeigt.
-
Wenn der Benutzer später zu einer Einstellungsbenutzeroberfläche navigieren möchte, kann der Benutzer zu einem späteren Zeitpunkt eine Benutzereingabe vorsehen, die ein Benutzerschnittstellenelement (z. B. ein Symbol, eine Schaltfläche, ein Label oder dergleichen) für die Einstellungen in der aktuell angezeigten Standard- oder Hauptbenutzeroberfläche für die Anwendung auswählt. Das Laufzeitsystem 126 sendet eine Nachricht an den Anwendungscontainer 102A, der die Auswahl des Benutzeroberflächenelements anzeigt. Die ausführbare Komponente 108A ermittelt, dass die Auswahl die Benutzeroberfläche der Einstellungen anzeigt. Die ausführbare Komponente 108A erzeugt eine Nachricht mit einer benutzerdefinierten Kennung 120N für das Unterpaket 122N, das die Funktionalität für die Einstellungsbenutzerschnittstelle beinhaltet. Die ausführbare Komponente 108A kann die Nachricht an den Router 112 direkt oder an das Laufzeitsystem 126 senden, das wiederum die Nachricht an den Router 112 zurückleitet. In jedem Fall führt der Router 112 eine Suche der benutzerdefinierten Kennung 120N aus und ermittelt, dass das Unterpaket für die Unterpaket-Kennung 122N nicht lokal an der Computervorrichtung 100 gespeichert ist.
-
In ähnlicher Weise sendet der Router 112, wie vorstehend in Bezug auf das Unterpaket 104A beschrieben, eine Nachricht unter Verwendung der Containerlaufzeit 124 und/oder des Laufzeitsystems 126 an das Ferncomputersystem 142A, um das Unterpaket für die Unterpaket-Kennung 122N abzurufen. Das Ferncomputersystem 142A kann ein Unterpaket 122N an die Computervorrichtung 100 senden, die ausführbare Komponenten zum Anzeigen der Einstellungsschnittstelle der Navigationsanwendung umfasst. Während die Computervorrichtung 100 das Unterpaket 122N abruft, kann der Lebenszyklusmanager 110 Lebenszyklusanrufe, die an der Rückrufschnittstelle 113 empfangen werden, puffern. Nach dem Herunterladen des Unterpakets 122N veranlasst der Lebenszyklusmanager 110 den Lader 106, ausführbare Komponenten des Unterpakets 122N in den Speicher zu laden. Der Lader 106 kann die Ausführung einer oder mehrerer der ausführbaren Komponenten auslösen, um zu bewirken, dass die Einstellungsschnittstelle der Navigationsanwendung an einer Anzeigevorrichtung der Computervorrichtung 100 angezeigt wird.
-
2 ist ein Blockdiagramm, das weitere Einzelheiten der Computervorrichtung 100 gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung veranschaulicht. 2 ist ein Blockdiagramm, das weitere Einzelheiten der Computervorrichtung 100 gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung veranschaulicht. Viele andere Beispiele der Computervorrichtung 100 können in anderen Fällen verwendet werden und können eine Untermenge der Komponenten beinhalten, die in der exemplarischen Computervorrichtung 100 beinhaltet sind, oder sie können zusätzliche Komponenten beinhalten, die nicht als Beispiel eine Computervorrichtung 100, wie in 2 veranschaulicht.
-
Wie im Beispiel von 2 gezeigt, beinhaltet die Computervorrichtung 100 einen oder mehrere Prozessoren 240, eine oder mehrere Eingabekomponenten 242, eine oder mehrere Kommunikationseinheiten 244, eine oder mehrere Ausgabekomponenten 246, eine oder mehrere Speichervorrichtungen 248 und eine Präsenz-sensitive Anzeige 212. Die Speichereinrichtungen 248 der Computervorrichtung 100 beinhalten Anwendungscontainer 102, Systemlaufzeit 126 und Betriebssystem 136. Die Kommunikationskanäle 250 können jede der Komponenten 240, 244, 246, 242, 258, 204, 213, 215, 248, 102, 126 und/oder 136 für interkommunale Kommunikation (physisch, kommunikativ und/oder operativ) miteinander verbinden. In einigen Beispielen können die Kommunikationskanäle 250 einen Systembus, eine Netzwerkverbindung, eine prozessübergreifende Kommunikationsdatenstrukturen oder beliebige Komponenten zum Kommunizieren von Daten zwischen Hardware und/oder Software beinhalten.
-
Einer oder mehrere Prozessoren 240 können Funktionalität implementieren und/oder Anweisungen innerhalb der Computervorrichtung 100 ausführen. So können beispielsweise Prozessoren 240 auf der Computervorrichtung 100 Anweisungen empfangen und ausführen, die durch die Speichervorrichtungen 248 gespeichert sind, die Funktionalitäten von des Betriebssystems 136, der Anwendungscontainer 102 und der Systemlaufzeit 126 bereitstellen. Diese durch die Prozessoren 240 ausgeführten Anweisungen können dazu führen, dass die Computervorrichtung 100 während der Programmausführung in den Speichervorrichtungen 248 Informationen speichert und/oder modifiziert. Die Prozessoren 240 können Anweisungen des Betriebssystems 136, der Anwendungscontainer 102 und der Systemlaufzeit 126 ausführen, um eine oder mehrere Operationen durchzuführen. Das heißt, das Bewertungssystem 136, die Anwendungscontainer 102 und die Systemlaufzeit 126 können von den Prozessoren 240 betrieben werden, um verschiedene Funktionen auszuführen, die in dieser Offenbarung beschrieben sind.
-
Eine oder mehrere Eingabekomponenten 242 der Computervorrichtung 100 können eine Eingabe empfangen. Beispiele für Eingaben sind taktile, akustische, kinetische und optische Eingaben, um nur einige Beispiele zu nennen. Die Eingabekomponenten 242 der Computervorrichtung 100 beinhalten n einem Beispiel eine Maus, eine Tastatur, ein sprachempfindliches System, eine Videokamera, Tasten, einen Steuerblock, ein Mikrofon oder eine beliebige andere Art von Vorrichtung zum Erfassen der Eingabe von einem Menschen oder einer Maschine. In einigen Beispielen kann die Eingabekomponente 242 eine Präsenz-empfindliche Eingabekomponente sein, die einen Präsenz-empfindlichen Bildschirm, einen berührungsempfindlichen Bildschirm usw. beinhalten.
-
Eine oder mehrere Ausgabekomponenten 246 der Computervorrichtung 100 können Ausgaben erzeugen. Beispiele von Ausgaben sind taktile, Audio- und Videoausgaben. Die Ausgabekomponenten 246 der Computervorrichtung 100 beinhalten in einigen Beispielen einen Präsenz-empfindlichen Bildschirm, eine Soundkarte, eine Videografikadapterkarte, einen Lautsprecher, einen Kathodenstrahlröhren(CRT)-Monitor, eine Flüssigkristallanzeige (LCD) oder jede andere Art von Vorrichtung zum Erzeugen von Ausgaben an einen Menschen oder eine Maschine. Die Ausgabekomponenten können Anzeigekomponenten wie einen Kathodenstrahlröhren (CRT) Monitor, eine Flüssigkristallanzeige (LCD), eine lichtemittierende Diode (LED) oder jede andere Art von Vorrichtung zum Erzeugen taktiler, akustischer und/oder visueller Ergebnisse beinhalten.
-
In einigen Beispielen kann die Präsenz-empfindliche Anzeige 204 der Computervorrichtung 100 eine Funktionalität der Eingabekomponente 242 und/oder der Ausgabekomponenten 246 beinhalten. Im Beispiel von 2, kann die Präsenz-empfindliche Anzeige 204 eine Präsenz-empfindliche Eingabekomponente 215, wie beispielsweise einen Präsenz-empfindlichen Bildschirm oder berührungsempfindlichen Bildschirm, beinhalten. In einigen Beispielen kann die Präsenz-empfindliche Eingabekomponente 215 ein Objekt an und/oder in der Nähe der Präsenz-empfindlichen Eingabekomponente erfassen. Als ein exemplarischer Bereich kann die Präsenz-empfindliche Eingabekomponente 215 ein Objekt, wie beispielsweise einen Finger oder einen Stift, erkennen, der sich innerhalb von zwei Zoll oder weniger zu der Präsenz-empfindlichen Eingabekomponente 215 befindet. Die Präsenz-empfindliche Eingangskomponente 215 kann einen Standort (z. B. eine (x, y) Koordinate) der Präsenz-empfindlichen Eingabekomponente ermitteln, an der das Objekt erfasst wurde. In einem anderen exemplarischen Bereich kann die Präsenz-empfindliche Eingabekomponente 215 ein Objekt erfassen, das zwei Zentimeter oder weniger von der Präsenz-empfindlichen Eingabekomponente 215 entfernt ist, und andere Bereiche sind ebenfalls möglich. Die Präsenz-empfindliche Eingabekomponente 215 kann die Position der Präsenz-empfindlichen Eingabekomponente 215, die durch einen Benutzer-Finger ausgewählt wird, unter Verwendung kapazitiver, induktiver und/oder optischer Erkennungstechniken ermitteln.
-
In einigen Beispielen stellt die präsenzsensitive Eingabevorrichtung 204 auch eine Ausgabe für einen Benutzer unter Verwendung von taktilen, Audio- oder Video-Stimuli bereit, wie in Bezug auf Ausgabekomponente 246 beschrieben. So kann beispielsweise die Präsenz-empfindliche Anzeige 204 eine Anzeigekomponente 213 beinhalten, die eine graphische Benutzeroberfläche darstellt. Die Anzeigekomponente 213 kann jede Art von Ausgabekomponente sein, die eine visuelle Ausgabe bereitstellt, wie sie in Bezug auf die Ausgabekomponenten 246 beschrieben ist. Während die Darstellung als integrierte Komponente der Computervorrichtung 100 dargestellt ist, kann die Präsenz-sensitive Anzeige 204 in einigen Beispielen eine externe Komponente sein, die einen Datenpfad mit anderen Komponenten der Computervorrichtung 100 zum Senden und/oder Empfangen von Eingabe und Ausgabe teilt. So kann beispielsweise die Präsenz-empfindliche Anzeige 204 eine eingebaute Komponente der Computervorrichtung 100 sein, die innerhalb der physikalischen Verbindung mit der externen Verpackung der Computervorrichtung 100 (z. B. einem Bildschirm auf einem Mobiltelefon) angeordnet ist. In einem anderen Beispiel kann die Präsenz-empfindliche Anzeige 204 eine externe Komponente der Computervorrichtung 100 sein, die sich außerhalb der physikalischen Abgrenzung der Verpackung der Computervorrichtung 100 befindet (z. B. ein Monitor, ein Projektor usw. der verdrahteten und/oder drahtlosen Datenpfad mit einem Tablet-Computer teilt). In einigen Beispielen kann die Präsenz-empfindliche Anzeige 204, wenn sie außerhalb und physisch von der Verpackung der Computervorrichtung 100 getrennt ist, durch zwei getrennte Komponenten implementiert werden: eine Präsenz-empfindliche Eingabekomponente 215 zum Empfangen der Eingabe und eine Anzeigekomponente 213 zur Bereitstellung einer Ausgabe.
-
Eine oder mehrere Kommunikationseinheiten 244 der Computervorrichtung 100 können mit externen Vorrichtungen durch Senden und/oder Empfangen von Daten kommunizieren. So kann beispielsweise die Computervorrichtung 100 Kommunikationseinheiten 244 verwenden, um Funksignale in einem Funknetz, wie z. B. einem Mobilfunknetz, zu senden und/oder zu empfangen. In einigen Beispielen können die Kommunikationseinheiten 244 Satellitensignale auf einem Satellitennetz, wie z. B. einem GPS-Netzwerk (Global Positioning System) senden und/oder empfangen. Beispiele der Kommunikationseinheit 244 können eine Netzwerkschnittstellenkarte (z. B. eine Ethernetkarte), einen optischen Transceiver, einen Hochfrequenztransceiver, einen GPS-Empfänger oder jede andere Art von Vorrichtung beinhalten, die Informationen senden und/oder empfangen kann. Andere Beispiele von Kommunikationseinheiten 244 können Bluetooth®-, GPS-, 3G-, 4G- und Wi-Fi®-Funkgeräte, die sich in mobilen Geräten befinden sowie in Universal Serial Bus (USB) Regler und dergleichen beinhalten.
-
Eine oder mehrere Speichervorrichtungen 248 innerhalb der Computervorrichtung 100 können Informationen für die Verarbeitung während des Betriebs der Computervorrichtung 100 speichern. In einigen Beispielen ist die Speichervorrichtung 248 ein temporärer Speicher, was bedeutet, dass der Hauptzweck der Speichervorrichtung 248 keine Langzeitspeicherung ist. Die Speichervorrichtungen 248 auf der Computervorrichtung 100 können zur Kurzzeitspeicherung von Informationen als flüchtiger Speicher konfiguriert sein, und behalten deshalb gespeicherte Inhalte nicht, wenn sie ausgeschaltet werden. Beispiele von flüchtigen Speichern beinhalten Arbeitsspeicher (RAM), dynamische Arbeitsspeicher (DRAM), statische Arbeitsspeicher (SRAM) und andere Formen von flüchtigen Speichern, die auf dem Gebiet bekannt sind.
-
Speichervorrichtungen 248 beinhalten in einigen Beispielen auch eines oder mehrere computerlesbare Speichermedien. Speichervorrichtungen 248 können größere Mengen von Informationen als flüchtige Speicher speichern. Speichervorrichtungen 248 können weiterhin zur Langzeitspeicherung von Informationen als nichtflüchtiger Speicherplatz und zum Halten von Informationen nach Stromeinschalt-/Ausschaltzyklen konfiguriert sein. Beispiele von nicht flüchtigen Speichern beinhalten magnetische Festplatten, optische Festplatten, Disketten, Flashspeicher oder Formen von elektrisch programmierbaren Speichern (EPROM) oder von elektrisch überschreibbaren und programmierbaren (EEPROM) Speichern. Die Speichereinrichtungen 248 können Programmanweisungen und/oder Daten speichern, die dem Betriebssystem 136, der Systemlaufzeit 126 und den Anwendungscontainern 102 zugeordnet sind.
-
Wie in 2 gezeigt, kann die Computervorrichtung 100 eine Stromquelle 258 beinhalten. In einigen Beispielen kann die Stromquelle 258 eine Batterie sein. Die Stromquelle 258 kann Energie an eine oder mehrere Computervorrichtungen 100 bereitstellen. Beispiele für die Energiequelle 258 können, sind jedoch nicht notwendigerweise beschränkt darauf, Batterien, die Zink-Kohle-, Blei-Säure-, Nickel-Cadmium (NiCd), Nickel-Metall-Hybrid (NiMH), Lithium-Ionen (Li-Ion) und oder Lithium-Ionenpolymer(Li-Ionenpolymer)-Chemikalien beinhalten. In einigen Beispielen kann die Stromquelle 258 eine begrenzte Kapazität (z. B. 1000–3000 mAh) aufweisen.
-
In Übereinstimmung mit den Techniken der Offenbarung empfängt die Systemlaufzeit 126 eine Anforderung, um eine bestimmte Funktionalität einer Anwendung auszuführen. So kann zum Beispiel ein Benutzer eine Benutzereingabe an der Präsenz-empfindlichen Anzeige 204 bereitstellen. Die Präsenz-empfindliche Anzeige 204 kann die Systemlaufzeit 126 dazu veranlassen, ein Ereignis zu erzeugen, das der Auswahl eines Symbols für die Anwendung entspricht. In Reaktion darauf, dass ein Anwendungscontainer zum Beibehalten installierbarer Unterpakete der Anwendung nicht im flüchtigen Speicher der Speicherkomponenten 248 zugeordnet ist, ruft die Systemlaufzeit 126 eine Anwendungsdefinition von einem entfernten Computersystem ab. Die Systemlaufzeit 126 veranlasst zum Beispiel eine der Kommunikationseinheiten 244 eine Anforderung an das Ferncomputersystem für die Anwendungsdefinition zu senden. Die Anwendungsdefinition kann eine Vielzahl von Zuordnungen zwischen den installierbaren Unterpaketen der Anwendung und der benutzerdefinierten Kennung definieren.
-
Als Reaktion auf das Zuweisen des Anwendungscontainers 102A in dem flüchtigen Speicher der Computervorrichtung 100 kann die Systemlaufzeit 126 zumindest teilweise auf einer benutzerdefinierten Kennung der Anforderung die spezielle Funktionalität der Anwendung einleiten. In Reaktion auf das Ermitteln durch den Anwendungscontainer 102A, der an der Computervorrichtung ausgeführt wird, der zumindest teilweise auf der Anwendungsdefinition und der benutzerspezifischen Kennung basiert, ein installierbares Unterpaket für die spezielle Funktionalität nicht in der Computervorrichtung 100 gespeichert ist, kann der Anwendungscontainer 102A das installierbare Unterpaket abrufen, das mehrere ausführbare Komponenten von einem Ferncomputersystem beinhaltet. Das Ferncomputersystem kann die gleiche Computervorrichtung sein, welches die Anwendungsdefinition oder eine andere Computervorrichtung beinhaltet. In einigen Beispielen können die Computervorrichtungen, wenn sie verschieden sind, durch einen gemeinsamen Betreiber betrieben werden. In einigen Beispielen ist ein Betreiber ein Administrator oder jede andere Entität, die ein oder mehrere Computersysteme besitzt und/oder betreibt.
-
Anstatt jede ausführbare Komponente und eine Komponente auf Basis durch eine Komponente herunterzuladen und anstatt alle ausführbaren Komponenten der Anwendung herunterzuladen, kann die Computervorrichtung 100 nur die eine oder mehrere Unterpakete abrufen, die diskreten Sätzen an Funktionalität entsprechen, die von der Anwendung benötigt werden. Darüber hinaus identifizieren sie anstelle des Laders 106 (gezeigt in 1), zur Laufzeit und während der Ausführung jede separate ausführbare Komponente, die nicht lokal gespeichert ist, und Abrufen und Installieren von derartigen ausführbaren Komponenten separat auf einer Komponente-für-Komponenten-Basis, kann der Anwendungscontainer 102A ein Unterpaket für eine bestimmte Funktionalität herunterladen, basierend auf der Identifizierung des Software-Entwicklers des Unterpakets mit einer benutzerdefinierten Kennung. Als solches kann die Wiedergewinnung von Unterpaketen ein etwas granulärer, aber effizienterer Wiedergewinnungsmechanismus sein als das Abrufen und Installieren von derartigen ausführbaren Komponenten separat auf einer Komponente-für-Komponenten-Basis. Der Anwendungscontainer 102A kann unter Verwendung einer oder mehrerer ausführbarer Komponenten des abgerufenen Unterpakets, der speziellen Funktionalität der Anwendung, ausgeführt werden.
-
In einigen Beispielen kann jeder jeweilige Anwendungscontainer einer bestimmten Anwendung entsprechen. So kann beispielsweise ein Betriebssystem eine Benutzeroberfläche beinhalten, die es einem Benutzer ermöglicht, verschiedene Anwendungen (z. B. von einem Menü- oder Icongitter) basierend auf entsprechender Symbolen auszuwählen, die den verschiedenen Anwendungen entsprechen. So kann beispielsweise ein Benutzer ein E-Mail-Client-Symbol aus der Betriebssystem-Benutzeroberfläche auswählen, das die Ausführung der E-Mail-Clientanwendung mit seinem eigenen separaten Anwendungscontainer verursacht. Im Gegensatz zu einem Anwendungscontainer kann eine Erweiterung oder eine andere Unteranwendung eines Webbrowsers (z. B. Plugins, JavaScript, Java Virtual Machine, usw.), nicht als separate Anwendungen dargestellt werden, die in einer Benutzeroberfläche eines Betriebssystems gestartet werden sollen. Selbst wenn ein Webbrowser einen eigenen Prozess für jede Registerkarte einer Registerkartenschnittstelle erstellt hat, kann nicht jede der Registerkarten als eine separate Anwendung innerhalb einer Benutzeroberfläche des Betriebssystems als unterschiedliche startbare Anwendungen dargestellt werden.
-
Ein Anwendungscontainer, wie er in dieser Offenbarung beschrieben ist, kann sich von einem Webbrowser unterscheiden, da ein Anwendungscontainer eine Containerlaufzeit beinhalten kann. Wie in dieser Offenbarung beschrieben, kann eine Containerlaufzeit eines Anwendungscontainers Bibliotheken beinhalten, aber auch Betriebssystem-APIs für ausführbare Komponenten von Unterpaketen in einem Anwendungscontainer freigeben. Im Gegensatz zu einem Anwendungscontainer kann ein Webbrowser derartige Betriebssystem-APIs nicht Erweiterungen oder anderen Unteranwendungen innerhalb des Webbrowsers aussetzen.
-
Ein Anwendungscontainer, wie er in dieser Offenbarung beschrieben ist, kann sich von einem Webbrowser unterscheiden, da der Anwendungscontainer benutzerdefinierte Kennungen (z. B. URIs) von einer Supervisorkomponente (z. B. in einem Laufzeitsystem oder Betriebssystem), die außerhalb des Anwendungscontainers ist, die den Abruf von Unterpaketen, die das Ausführungsverhalten oder das Erscheinungsbild der Anwendung ohne zusätzlichen Benutzereingriff ändert, empfangen kann. Die benutzerdefinierten Kennungen können von anderen Anwendungen stammen, die auf derselben Computervorrichtung ausgeführt werden, und nach Empfang durch einen Anwendungscontainer kann automatisch das Ausführungsverhalten oder das Aussehen der Anwendung geändert werden. Im Gegensatz dazu kann ein Webbrowser eine Benutzereingabe (z. B. Eingeben von Text für eine URL) innerhalb des Web-Browsers selbst und nicht von einer Quelle außerhalb des Anwendungscontainers empfangen, z. B. entweder eine Supervisorkomponente oder eine andere Anwendung außerhalb der Web-Browsers. Zusätzlich kann ein Webbrowser einen Router und/oder eine Anwendungsdefinition, wie sie in einem Anwendungscontainer dieser Offenbarung beschrieben ist, nicht beinhalten, um eine Suche nach benutzerdefinierten Kennungen durchzuführen und die Ausführung der Anwendung, die durch den Anwendungscontainer dargestellt wird, zu ändern. Im Gegensatz zu einem Anwendungscontainer beinhaltet ein Webbrowser möglicherweise keine Rückrufschnittstelle, die Lebenszyklusanrufe empfängt und puffert, um die Operation von Unterpaketen innerhalb des Anwendungscontainers zu ändern.
-
In einigen Beispielen kann ein Webbrowser eine Kernfunktionalität (z. B. Rendering Engine) und eine oder mehrere Erweiterungen, Plugins und/oder Unteranwendungen von Drittanbietern beinhalten. Ein Webbrowser kann, im Gegensatz zu einem Anwendungscontainer, möglicherweise nicht ordnungsgemäß funktionieren oder überhaupt ausführen, ohne dass alle Kernfunktionen des Webbrowsers lokal gespeichert und der Computervorrichtung zur Ausführung zur Verfügung stehen. Im Gegensatz dazu kann ein Anwendungscontainer mit nur einem Untersatz seiner Kernfunktionalität (z. B. nur Unterpakete für eine Untermenge von Benutzeroberflächen), die lokal gespeichert sind und für die Ausführungsvorrichtung der Computervorrichtung zur Verfügung stehen, korrekt funktionieren.
-
3 ist ein Ablaufdiagramm, das exemplarische Operationen einer Computervorrichtung mit Anwendungscontainern zum dynamischen Laden von installierbaren Unterpaketen gemäß den Techniken dieser Offenbarung veranschaulicht. Zum Zwecke der Veranschaulichung werden die nachfolgenden exemplarischen Operationen im Kontext der Computervorrichtung 100 und des Ferncomputersystems 142 von 1 beschrieben.
-
Wie in 3 gezeigt, kann die Computervorrichtung 100 zunächst eine Anfrage 300 erkennen oder empfangen, um eine bestimmte Funktionalität der Computervorrichtung 100 einzuleiten. So kann beispielsweise der Benutzer eine Benutzereingabe an die Computervorrichtung 100 bereitstellen, um zunächst ein Symbol auszuwählen, das der Anwendung entspricht, die für die Zwecke von 3 eine Navigationsanwendung ist. Alternativ kann der Benutzer die Navigationsanwendung in einer Medienspeicheranwendung auswählen, die an der Computervorrichtung 100 ausgeführt wird und mit dem entfernten Computersystem 142 kommuniziert, um Unterpakete und Anwendungsdefinitionen abzurufen. Der Supervisor 302 kann die Anfrage empfangen. In 3 kann die Anforderung eine benutzerdefinierte Kennung http://wh.com/s/123 beinhalten. Die benutzerdefinierte Kennung kann ein Uniform Resource Locator (URL) sein. Die URL beinhaltet eine Unterkennung wh.com, die eine global eindeutige Kennung in entfernten Computersystemen 142 für die Navigationsanwendung ist, wie in dieser Offenbarung beschrieben.
-
Der Supervisor 302 kann bestimmen, ob eine oder mehrere Unterpakete für die Navigationsanwendung in der Computervorrichtung 100 (308) gespeichert sind. Wenn keine Unterpakete für die Navigationsanwendung in der Computervorrichtung 100 gespeichert sind, sendet die Computervorrichtung 100 eine Anforderung, um die benutzerdefinierte Kennung http://wh.com/s/123 zu einer bestimmten Anwendungsdefinition (310) aufzulösen. Ein oder mehrere der entfernten Computersysteme 142 führen eine Suche auf allen oder einem Teil der benutzerdefinierten Kennung http://wh.com/s/123 durch, um eine Anwendungsdefinition zu identifizieren. Nach dem Identifizieren der Anwendungsdefinition sendet das eine oder mehrere der entfernten Computersysteme 142 die Anwendungsdefinition app_def {package: com.wh.app, ...} an die Computervorrichtung 100 (312).
-
Der Supervisor 102 kann beim Empfangen der Anwendungsdefinition app_def {package: com.wh.app, ...} die vom Softwareentwickler zugewiesene Paketkennung für die Anwendung (com.wh.app) der Unterkennung wh.com als eine global eindeutige Kennung für die Navigationsanwendung in entfernten Computersystemen 142 (316) zuordnen. Der Supervisor 302 sendet eine Nachricht an den Anwendungscontainer 102A, um die spezielle Funktionalität auszuführen, die in der ursprünglichen Anforderung 300 (318) festgelegt ist. In einigen Beispielen kann die Nachricht die Anwendungsdefinition, die benutzerdefinierte Kennung und/oder einen oder mehrere Befehle festlegen. Als ein Beispiel beinhaltet die gesendete Nachricht die in 3 START {app_def, http://wh.com/s/123} den Befehl START, die Anwendungsdefinition app_def und die benutzerdefinierte Kennung http://wh.com/s/123.
-
Der Anwendungscontainer 102A empfängt die Nachricht und leitet die spezielle Funktionalität, die durch die Nachricht angegeben ist, ein. Der Anwendungscontainer 102A führt eine Suche durch, um zu bestimmen, ob eine oder mehrere Unterpakete zur Ausführung der durch das Suffix/s/123 spezifizierten Funktionalität lokal an der Computervorrichtung 100 gespeichert sind. Im Beispiel von 3 legt der /s-Teil des Suffixes die Einstellungsfunktionalität fest, für die ein Unterpaket das Aussehen und das Verhalten der Einstellungsfunktionalität implementiert. Das /123 Suffix gibt ein Attribut an, das zur Definition des Aussehens und/oder des Verhaltens der Benutzeroberfläche verarbeitet werden kann. So kann beispielsweise das /123-Suffix eine bestimmte Benutzerschnittstelle, die in der Einstellungsfunktionalität vorgesehen ist, angeben.
-
Nach dem Bestimmen, dass ein Unterpaket für die Einstellfunktionalität nicht lokal an der Computervorrichtung 100 gespeichert ist, sendet der Anwendungscontainer 102A eine Nachricht an eines oder mehrere der entfernten Computersysteme 142, um das Unterpaket für die Einstellfunktionalität (322) abzurufen. Die Nachricht kann Informationen beinhalten, welche die vom Softwareentwickler zugewiesene Paketkennung für die Anwendung (com.wh.app) und die Unterpaketkennung (settings_function) für das Unterpaket, das die Einstellungsfunktionalität bereitstellt, beinhalten, aber nicht darauf beschränkt sind. Das eine oder die mehreren entfernten Computersysteme, die die Nachricht empfangen, führen eine Suche auf der Basis der vom Softwareentwickler zugewiesenen Paketkennung für die Anwendung (com.wh.app) durch, und ferner basierend auf der Unterpaketkennung (settings_function) für das Unterpaket, auswählen des Unterpakets für die Einstellfunktionalität und senden des Unterpakets an den Anwendungscontainer (324). Der Anwendungscontainer 102A empfängt das Einstellungs-Unterpaket (settings_function sub-package) (324). Die Computervorrichtung 100 kann eine oder mehrere ausführbare Komponenten des Einstellungs-Unterpakets (settings_function sub-package) ausführen, um die in der Anforderung angegebene spezielle Funktionalität auszuführen.
-
4 ist ein konzeptionelles Diagramm eines Anwendungscontainern zum dynamischen Laden von installierbaren Unterpaketen mit entsprechenden Bibliotheken gemäß den Techniken dieser Offenbarung. 4 veranschaulicht den Anwendungscontainer 102A von 1 mit Containerlaufzeit 124. Der Anwendungscontainer 102A kommuniziert mit der Supervisorkomponente 128A. 4 veranschaulicht die Beziehung zwischen dem Anwendungscontainer 102A, den Unterpaketen 104C und 104A und den Bibliotheken 400A–400C („Bibliotheken 400”). Das Unterpaket 104C beinhaltet eine Funktionalität zum Implementieren von Turn-by-Turn und punktuellen Benutzeroberflächen, wie in 1 beschrieben. Das Unterpaket 104C beinhaltet eine Funktionalität zum Implementieren der Einstellungsbenutzeroberfläche, wie in 1 beschrieben.
-
Wenn ein Benutzer eine Benutzereingabe bereitstellt, um zu veranlassen, dass die Computervorrichtung 100 die Einstellungsbenutzeroberfläche anzeigt, kann der Anwendungscontainer 102A ermitteln, ob das Unterpaket 104A lokal auf der Computervorrichtung 100 gespeichert ist. So kann beispielsweise der Anwendungscontainer 102A einen URI mit dem /settings Suffix empfangen und ermitteln, ob das entsprechende Unterpaket lokal installiert ist. Wenn nicht, kann der Anwendungscontainer 102A mit dem Supervisor 128A kommunizieren, um das Unterpaket 104A von einem entfernten Rechensystem abzurufen. In einigen Beispielen kann der Anwendungscontainer 102A bestimmen, dass das Unterpaket 104A eine oder mehrere Bibliotheken, wie beispielsweise die Bibliothek 400C, verwendet, um eine oder mehrere Operationen auszuführen. Der Anwendungscontainer 102A und in einigen Beispielen kann der Lader 106 des Anwendungscontainers 102A dazu führen, dass die Bibliothek 400C in den Speicher geladen wird. So kann beispielsweise der Anwendungscontainer 102A eine Nachricht an die Supervisor 128A-Spezifizierungsbibliothek 400C senden, die bewirkt. dass die Bibliothek 400C in den Speicher geladen wird. In einem anderen Beispiel kann der Anwendungscontainer 104A die Bibliothek 400C direkt aufrufen oder er kann die Bibliothek 400C durch die Containerlaufzeit 124 aufrufen. In noch anderen Beispielen können eine oder mehrere ausführbare Komponenten des Unterpakets 104A beim Laden des Unterpakets 104A in den Speicher die Bibliothek 400C aufrufen.
-
Wenn die Bibliothek 400C und/oder das Unterpaket 104A eine transitive Abhängigkeit von der Bibliothek 400B aufweist, können der Anwendungscontainer 102A, das Unterpaket 104A und/oder der Supervisor 128A ebenfalls die Bibliothek 400B laden. Auf diese Weise werden alle zur Ausführung des Unterpakets 104A notwendigen Bibliotheken in den Speicher geladen oder auf andere Weise dem Anwendungscontainer 102A und/oder dem Unterpaket 104A zugänglich gemacht. In einigen Beispielen beinhaltet die Containerlaufzeit 124A Bibliotheken 400, während in anderen Beispielen die Bibliotheken 400 in dem Laufzeitsystem 126 beinhaltet sind, wie in 1 dargestellt.
-
In Beispielen, in denen Bibliotheken 400 in der Containerlaufzeit 124A beinhaltet sind, kann der Anwendungscontainer 102A automatisch die Containerlaufzeit 124 aktualisieren, indem aktualisierte Bibliotheken lokal und/oder von einem entfernten Computersystem abgerufen werden. So kann beispielsweise der Anwendungscontainer 102A eine Anwendungsdefinition abrufen, die eine minimale Version einer Bibliothek angibt. Der Anwendungscontainer 102A kann basierend auf der angegebenen Version automatisch eine Bibliothek abrufen, die mindestens die minimale Version aufweist. In einigen Beispielen kann der Anwendungscontainer 102A periodisch oder asynchron prüfen (z. B. wenn die Anwendung anfänglich in den Speicher geladen wird), ob aktualisierte Bibliotheken verfügbar sind und diese Bibliotheken automatisch von einem oder mehreren entfernten Computersystemen abrufen. Auf diese Weise müssen Softwareentwickler nicht prüfen müssen, ob eine Bibliothek aktuell ist, da der Anwendungscontainer sicherstellen kann, dass die Bibliotheksabhängigkeiten durch die Containerlaufzeit 124 erfüllt werden, bevor ausführbare Komponenten ausgeführt werden. Darüber hinaus kann die Containerlaufzeit 124 ohne die Notwendigkeit aktualisiert werden, das Betriebssystem 136 und/oder ohne das Notwendigkeitsaktualisierungslaufzeitsystem 126 zu aktualisieren.
-
5 ist ein Flussdiagramm, das exemplarische Operationen einer Computervorrichtung mit Anwendungscontainern zum dynamischen Laden von installierbaren Unterpaketen gemäß den Techniken dieser Offenbarung veranschaulicht. Die nachfolgenden exemplarischen Operationen im Kontext der Computervorrichtung 100 werden nur zum Zwecke der Veranschaulichung von 1 beschrieben.
-
In 5 kann die Computervorrichtung 100 zunächst eine Anfrage empfangen, um eine bestimmte Funktionalität einer Anwendung (500) auszuführen. So kann zum Beispiel ein Benutzer eine Benutzereingabe an der Computervorrichtung 100 zum Starten der Anwendung bereitstellen. Die Computervorrichtung 100 kann bestimmen, dass ein Anwendungscontainer zum Beibehalten installierbarer Unterpakete der Anwendung nicht in dem Speicher der Computervorrichtung 100 zugeordnet ist. In Reaktion darauf, dass ein Anwendungscontainer zum Beibehalten installierbarer Unterpakete der Anwendung nicht im Speicher zugeordnet ist, kann die Computervorrichtung 100 eine Anwendungsdefinition von einem entfernten Computersystem (502) abrufen. So kann beispielsweise die Computervorrichtung 100 eine Anfrage an das entfernte Computersystem senden, das eine eindeutige Kennung für die Anwendung beinhaltet. Das Ferncomputersystem kann eine Suche durchführen und eine entsprechende Anwendungsdefinition identifizieren. Das Ferncomputersystem kann die Anwendungsdefinition an die Computervorrichtung 100 senden.
-
Die Computervorrichtung 100 kann die Anwendungsdefinition von der Computervorrichtung 100 empfangen. Die Computervorrichtung 100 kann ferner eine Anwendung im Speicher der Computervorrichtung 100 für die Anwendung zuordnen. Als Reaktion auf das Zuordnen des Anwendungscontainers in den Speicher kann die Computervorrichtung 100 zumindest teilweise auf einer benutzerdefinierten Kennung der Anforderung die jeweilige Funktionalität der Anwendung (504). So kann beispielsweise die Supervisorkomponente eine Nachricht an den Anwendungscontainer senden, der eine benutzerspezifische Kennung z. B. URI, Tag, Label usw.) beinhaltet, die einem oder mehreren Unterpaketen entspricht, die ausführbare Komponenten zum Ausführen der bestimmten Funktionalität der Anwendung beinhalten.
-
Die Computervorrichtung 100 kann zumindest teilweise basierend auf der Anwendungsdefinition und der benutzerdefinierten Kennung bestimmen, dass ein installierbares Unterpaket für die spezielle Funktionalität nicht an der Computervorrichtung 100 gespeichert ist. In Reaktion darauf, dass zumindest teilweise auf der Anwendungsdefinition und der benutzerdefinierten Kennung basiert, dass ein installierbares Unterpaket für die spezielle Funktionalität nicht in der Computervorrichtung 100 gespeichert ist, kann die Computervorrichtung 100 das installierbare Unterpaket abrufen, das mehrere ausführbare Komponenten von einem Computersystem (506) beinhaltet. In einigen Beispielen kann die Computervorrichtung 100 das installierbare Unterpaket abrufen, das eine Vielzahl von ausführbaren Komponenten von einem Ferncomputersystem beinhaltet, das sich von dem Ferncomputersystem unterscheidet, das die Anwendungsdefinition beinhaltet. In einigen Beispielen kann die Computervorrichtung 100 das installierbare Unterpaket(e) abrufen, das eine Vielzahl von ausführbaren Komponenten von einem Ferncomputersystem beinhaltet, welches das gleiche ist wie das Ferncomputersystem, das die Anwendungsdefinition beinhaltet. Die Computervorrichtung 100 führt unter Verwendung einer oder mehrerer ausführbarer Komponenten der einen oder mehreren Unterpaketen die spezielle Funktionalität der Anwendung (508) aus. So kann beispielsweise die Computervorrichtung 100 beim Ausführen der ausführbaren Komponenten das Verhalten und/oder das Aussehen der Anwendung ändern.
-
Beispiel 1: Ein Verfahren umfassend: Empfangen einer Anforderung zur Ausführung einer bestimmten Funktionalität einer Anwendung durch eine Supervisorkomponente, die an der Computervorrichtung ausgeführt wird; als Reaktion darauf, dass ein Anwendungscontainer zum Beibehalten installierbarer Unterpakete der Anwendung nicht im Speicher der Computervorrichtung zugeordnet ist, Abrufen einer Anwendungsdefinition von einem ersten Ferncomputersystem durch die Supervisorkomponente, wobei die Anwendungsdefinition eine Vielzahl von Zuordnungen zwischen den installierbaren Unterpaketen der Anwendung und den benutzerdefinierten Kennungen definiert; als Reaktion auf die Zuteilung des Anwendungscontainers in den Speicher der Computervorrichtung, Initiieren der speziellen Funktionalität der Anwendung durch die Supervisorkomponente und zumindest teilweise auf einer benutzerdefinierten Kennung der Anforderung; als Reaktion auf das Ermitteln, dass der an der Computervorrichtung ausgeführte Anwendungscontainer zumindest teilweise auf der Anwendungsdefinition und der benutzerdefinierten Kennung basiert, dass ein installierbares Unterpaket für die spezielle Funktionalität durch den Anwendungscontainer nicht an der Computervorrichtung gespeichert wird, dass das installierbare Unterpaket eine Vielzahl von ausführbaren Komponenten von einem zweiten Ferncomputersystem beinhaltet; und Ausführen der speziellen Funktionalität der Anwendung durch den Anwendungscontainer und unter Verwendung der Vielzahl von ausführbaren Komponenten.
-
Beispiel 2: Das Verfahren von Beispiel 1, wobei die spezielle Funktionalität zuerst eine besondere Funktionalität ist, wobei die Anforderung zur Ausführung einer bestimmten Funktionalität eine erste Anforderung zum Ausführen einer ersten bestimmten Funktionalität ist, wobei das Verfahren ferner umfasst: Empfangen einer zweiten Anforderung zum Ausführen einer zweiten speziellen Funktionalität der Anwendung; dass der Anwendungscontainer für die Anwendung im Speicher zugeordnet ist und dass ein installierbares Unterpaket für die zweite spezielle Funktionalität nicht an der Computervorrichtung gespeichert wird, das installierbare Unterpaket für das zweite spezielle Objekt durch den Anwendungscontainer abgerufen wird, das installierbare Unterpaket für die zweite spezielle Funktionalität von dem zweiten Ferncomputersystem ohne Abrufen eines dritten Unterpakets der Anwendung von dem zweiten Ferncomputersystem abgerufen wird, wobei das dritte Unterpaket nicht auf der Computervorrichtung installiert ist; und Ausführen der speziellen Funktionalität der Anwendung durch den Anwendungscontainer und unter Verwendung einer Vielzahl von ausführbaren Komponenten, die in dem installierbaren Unterpaket für die zweite spezielle Funktionalität beinhaltet sind.
-
Beispiel 3: Verfahren nach irgendeinem der Beispiele 1–2, ferner umfassend: Puffern einer Vielzahl von Lebenszyklusanrufen, die von einem Laufzeitsystem der Computervorrichtung durch eine Lebenszykluskomponente des Anwendungscontainers empfangen werden; und in Reaktion auf das Ermitteln, dass mindestens eine der Vielzahl von ausführbaren Komponenten in den Speicher der Computervorrichtung geladen ist, Senden des einen oder mehrerer der Vielzahl von Lebenszyklusaufrufen an die mindestens eine der Vielzahl von ausführbaren Komponenten.
-
Beispiel 4: Verfahren nach irgendeinem der Beispiele 1–3, ferner umfassend: Empfangen der benutzerdefinierten Kennung durch einen Router des Anwendungscontainers; Abfragen einer Router-Tabelle, die die Mehrzahl von Zuordnungen zwischen den installierbaren Unterpaketen der Anwendung und der benutzerdefinierten Kennungen umfasst, durch den Router des Anwendungscontainers, um zu bestimmen, ob das installierbare Unterpaket für die bestimmte Funktionalität an der Computervorrichtung gespeichert ist; und in Reaktion darauf, dass ermittelt wird, dass das installierbare Unterpaket für die spezielle Funktionalität nicht lokal an der Computervorrichtung gespeichert wird, Senden einer Nachricht, die eine Kennung des installierbaren Unterpakets beinhaltet, an das zweite entfernte Computersystem.
-
Beispiel 5: Verfahren nach irgendeinem der Beispiele 1–4, ferner umfassend: Identifizieren einer Mindestversion einer Bibliothek, die in der Anwendungsdefinition angegeben ist, durch den Anwendungscontainer; vor der Ausführung der Anwendung mit dem Laufzeitcontainer: Abrufen einer Instanz der Bibliothek mit einer Version, die größer oder gleich der Mindestversion ist; Installieren der Instanz der Bibliothek in einer Containerlaufzeit des Anwendungscontainers; und das Ausführen der speziellen Funktionalität der Anwendung das Ausführen der speziellen Funktionalität unter Verwendung der Instanz der Bibliothek in der Containerlaufzeit umfasst.
-
Beispiel 6: Verfahren nach irgendeinem der Beispiele 1–5, wobei jede der mehreren ausführbaren Komponenten eine kompilierte Klasse in einem objektorientierten Design ist, wobei der Anwendungscontainer als Prozess in einem Betriebssystem implementiert ist, das an der Computervorrichtung ausgeführt wird, und wobei das Unterpaket für die jeweilige Funktionalität für die spezielle Funktionalität weniger als alle ausführbaren Komponenten beinhaltet, die die Anwendung implementieren.
-
Beispiel 7: Verfahren nach irgendeinem der Beispiele 1–6, wobei das erste und das zweite entfernte Computersystem dieselbe Computervorrichtung sind.
-
Beispiel 8: Verfahren nach irgendeinem der Beispiele 1–7, wobei das erste und das zweite entfernte Computersystem in einem System beinhaltet sind, das von einem gemeinsamen Betreiber betrieben wird.
-
Beispiel 9: Computervorrichtung umfassend: einen oder mehrere Computerprozessoren; und einen Speicher mit Anweisungen, die, wenn sie durch den einen oder die mehreren Computerprozessoren ausgeführt werden, den einen oder die mehreren Computerprozessoren zu Folgendem veranlassen: Empfangen einer Anforderung zur Ausführung einer bestimmten Funktionalität einer Anwendung durch eine Supervisorkomponente der Computervorrichtung; als Reaktion darauf dass ein Anwendungscontainer zum Beibehalten installierbarer Unterpakete der Anwendung nicht im Speicher der Computervorrichtung zugeordnet ist, Abrufen einer Anwendungsdefinition von einem ersten Ferncomputersystem durch die Supervisorkomponente, wobei die Anwendungsdefinition eine Vielzahl von Zuordnungen zwischen den installierbaren Unterpaketen der Anwendung und den benutzerdefinierten Kennungen definiert; Einleiten, in Reaktion auf das Zuteilen des Anwendungscontainers in den Speicher der Computervorrichtung, der speziellen Funktionalität der Anwendung durch die Supervisorkomponente und zumindest teilweise basierend auf einer vom benutzerdefinierten Anforderung der Funktionalität der Anwendung; als Reaktion darauf, dass der Anwendungscontainer der Computervorrichtung zumindest teilweise auf der Anwendungsdefinition und der benutzerdefinierten Kennung basiert, dass ein installierbares Unterpaket für die spezielle Funktionalität nicht an der Computervorrichtung gespeichert wird durch den Anwendungscontainer, dass das installierbare Unterpaket eine Vielzahl von ausführbaren Komponenten von einem zweiten Ferncomputersystem beinhaltet; und Ausführen der speziellen Funktionalität der Anwendung durch den Anwendungscontainer und unter Verwendung der Vielzahl von ausführbaren Komponenten.
-
Beispiel 10: Computervorrichtung von Beispiel 9, wobei die Anweisungen, wenn sie durch den einen oder die mehreren Computerprozessoren ausgeführt werden, bewirken, dass der eine oder die mehreren Computerprozessoren eines der Verfahren der Beispiele 2–8 ausführen.
-
Beispiel 11: Ein nichtflüchtiges computerlesbares Speichermedium, das mit Anweisungen kodiert ist, die bei der Ausführung bewirken, dass mindestens ein Prozessor eines Rechengeräts von einer Supervisorkomponente des Rechengeräts eine Anforderung empfängt, eine spezielle Funktionalität einer Anwendung auszuführen; als Reaktion darauf, dass ein Anwendungscontainer zum Beibehalten installierbarer Unterpakete der Anwendung nicht im Speicher der Computervorrichtung zugeordnet ist, Abrufen einer Anwendungsdefinition von einem ersten Ferncomputersystem durch die Supervisorkomponente, wobei die Anwendungsdefinition eine Vielzahl von Zuordnungen zwischen den installierbaren Unterpaketen der Anwendung und den benutzerdefinierten Identifikatoren definiert; als Reaktion auf die Zuordnung des Anwendungscontainers in den Speicher der Computervorrichtung, Initiieren der speziellen Funktionalität der Anwendung durch die Supervisorkomponente und zumindest teilweise basierend auf einer benutzerdefinierten Anforderung der Funktionalität der Anwendung; als Reaktion darauf, dass der Anwendungscontainer der Computervorrichtung zumindest teilweise auf der Anwendungsdefinition und der benutzerspezifischen Kennung basiert, dass ein installierbares Unterpaket für die spezielle Funktionalität nicht an der Computervorrichtung gespeichert wird durch den Anwendungscontainer, dass das installierbare Unterpaket eine Vielzahl von ausführbaren Komponenten von einem zweiten Ferncomputersystem beinhaltet; und Ausführen der speziellen Funktionalität der Anwendung durch den Anwendungscontainer und unter Verwendung der Vielzahl von ausführbaren Komponenten.
-
Beispiel 12: Nichtflüchtiges computerlesbares Speichermedium von Beispiel 11, das mit Anweisungen kodiert ist, die bei der Ausführung bewirken, dass mindestens ein Prozessor einer Computervorrichtung ein beliebiges Verfahren der Beispiele 2–8 durchführt.
-
Beispiel 13: Vorrichtung umfassend Mittel zum Durchführen eines beliebigen Verfahrens der Beispiele 1–8.
-
In einem oder mehreren Beispielen können die beschriebenen Funktionen in Hardware, Software, Firmware oder jeder beliebigen Kombination davon implementiert sein. Wenn sie in Software implementiert sind, können die Funktionen als eine oder mehrere Anweisungen oder Codes als ein computerlesbares Medium gespeichert oder übertragen werden und von einer hardwarebasierten Verarbeitungseinheit ausgeführt werden. Computerlesbare Medien können computerlesbare Speichermedien beinhalten, die einem greifbaren Medium, wie z. B. Datenspeichermedien, oder Kommunikationsmedien entsprechen, einschließlich jedes Mediums, das die Übertragung eines Computerprogramms von einem Ort zum anderen erleichtert, z. B. gemäß einem Kommunikationsprotokoll. Auf diese Weise können computerlesbare Medien im Allgemeinen greifbaren computerlesbaren (1) Speichermedien entsprechen, welche nichtflüchtig oder (2) ein Kommunikationsmedium, wie beispielsweise ein Signal oder eine Trägerwelle, sind. Datenspeichermedien können beliebige verfügbare Medien sein, auf die von einem oder mehreren Computern oder einem oder mehreren Prozessoren zugegriffen werden kann, um Anweisungen Code und/oder Datenstrukturen zur Implementierung der in dieser Offenbarung beschriebenen Techniken abzurufen. Ein Computerprogrammprodukt kann ein computerlesbares Medium beinhalten.
-
Beispielsweise und nicht beschränkend können derartige computerlesbare Speichermedien RAM-, ROM-, EEPROM-, CD-ROM- oder andere optische Plattenspeicher, Magnetplattenspeicher oder andere magnetische Speichervorrichtungen, Flash-Speicher oder ein beliebiges anderes Medium, das verwendet werden kann, um den gewünschten Programmcode in Form von Anweisungen oder Datenstrukturen zu speichern und auf die von einem Computer zugegriffen werden kann, umfassen. Zudem wird jede Verbindung als ein computerlesbares Medium bezeichnet. Wenn beispielsweise Anweisungen von einer Website, einem Server oder einer anderen entfernten Quelle unter Verwendung eines Koaxialkabels, eines Glasfaserkabels, eines verdrillten Paars, einer digitalen Teilnehmerleitung (DSL) oder drahtloser Technologien wie beispielsweise Infrarot, Radio und Mikrowelle übertragen werden, dann sind Koaxialkabel, Glasfaserkabel, Twisted Pair, DSL oder drahtlose Technologien wie beispielsweise Infrarot, Radio und Mikrowelle in der Definition von Medium mit eingeschlossen. Es sollte jedoch verstanden werden, dass computerlesbare Speichermedien und Datenspeichermedien keine Verbindungen, Trägerwellen, Signale oder andere greifbaren Medien beinhalten, sondern stattdessen auf nichtflüchtige, greifbare Speichermedien ausgerichtet sind. Festplatten und Disketten, wie sie hierin verwendet werden, beinhalten Compact Disc (CD), Laserdisc, optische Disc, Digital Versatile Disc (DVD), Diskette und Blu-ray Disc, wobei Disks typischerweise Daten magnetisch wiedergeben, während Discs Daten optisch mit Laser wiedergeben. Kombinationen der vorstehenden sollten ebenfalls in den Umfang von computerlesbaren Medien eingeschlossen sein.
-
Anweisungen können durch einen oder mehrere Prozessoren, wie beispielsweise einen oder mehrere digitale Signalprozessoren (DSPs), Allzweckmikroprozessoren, anwendungsorientierte integrierte Schaltungen (ASICs), feldprogrammierbare Gate-Arrays (FPGAs) oder beliebige andere gleichwertige integrierte oder diskrete Logikschaltungen ausgeführt werden. Dementsprechend kann sich der Begriff „Prozessor”, wie er hierin verwendet wird, auf eine beliebige der vorgenannten Strukturen oder jede andere Struktur beziehen, die für die Implementierung der hierin beschriebenen Techniken geeignet ist. Darüber hinaus kann in einigen Aspekten die hierin beschriebene Funktionalität innerhalb dedizierter Hardware- und/oder Softwaremodule bereitgestellt werden. Auch könnten die Techniken vollständig in einer oder mehreren Schaltungen oder Logikelementen implementiert werden.
-
Die Techniken der vorliegenden Offenbarung können in einer breiten Vielfalt von Geräten oder Vorrichtungen implementiert werden einschließlich eines drahtlosen Handapparates, einer integrierten Schaltung (IC) oder eines Satzes von ICs (z. B. eines Chipsatzes). In dieser Offenbarung werden verschiedene Komponenten, Module oder Einheiten beschrieben, um funktionelle Aspekte von Vorrichtungen zu betonen, die konfiguriert sind, um die offenbarten Techniken auszuführen, aber nicht notwendigerweise eine Realisierung durch verschiedene Hardwareeinheiten erfordern. Vielmehr können, wie vorstehend beschrieben, verschiedene Einheiten in einer Hardwareeinheit kombiniert oder durch eine Sammlung von interoperativen Hardwareeinheiten, einschließlich eines oder mehrerer Prozessoren, wie vorstehend beschrieben, in Verbindung mit geeigneter Software und/oder Firmware bereitgestellt werden.
-
Verschiedene Aspekte der Offenbarung sind beschrieben worden. Diese und andere Beispiele liegen innerhalb des Umfangs der folgenden Ansprüche.