DE202016008133U1 - Containeranwendung mit dynamischem Unterpaket-Lader - Google Patents

Containeranwendung mit dynamischem Unterpaket-Lader Download PDF

Info

Publication number
DE202016008133U1
DE202016008133U1 DE202016008133.1U DE202016008133U DE202016008133U1 DE 202016008133 U1 DE202016008133 U1 DE 202016008133U1 DE 202016008133 U DE202016008133 U DE 202016008133U DE 202016008133 U1 DE202016008133 U1 DE 202016008133U1
Authority
DE
Germany
Prior art keywords
application
computing device
container
installable
functionality
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE202016008133.1U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE202016008133U1 publication Critical patent/DE202016008133U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

Computerlesbares Speichermedium, das mit Anweisungen kodiert ist, die, wenn sie von einem oder mehreren Prozessoren einer Computervorrichtung ausgeführt werden, die Computervorrichtung zu Folgenden veranlassen: Empfangen einer Anforderung zur Ausführung einer bestimmten Funktionalität einer Anwendung durch eine Supervisorkomponente, die an einer Computervorrichtung ausgeführt wird; Abrufen, in Reaktion auf das Bestimmen, dass ein Anwendungscontainer zum Beibehalten installierbarer Unterpakete der Anwendung nicht im Speicher der Computervorrichtung zugeordnet ist, einer Anwendungsdefinition durch die Supervisorkomponente von einem ersten Ferncomputersystem, wobei die Anwendungsdefinition eine Vielzahl von Zuordnungen zwischen den installierbaren Unterpaketen der Anwendung und den benutzerdefinierten Kennungen definiert; Einleiten, in Reaktion auf das Zuordnen des Anwendungscontainers in den Speicher kann die Computervorrichtung, der speziellen Funktionalität der Anwendung durch die Supervisorkomponente und zumindest teilweise auf einer benutzerdefinierten Kennung der Anforderung basierend; Abrufen, in 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 nicht in der Computervorrichtung gespeichert ist, vom Anwendungscontainer, das installierbare Unterpaket, das mehrere ausführbare Komponenten beinhaltet, von einem Ferncomputersystem; und Ausführen der speziellen Funktionalität der Anwendung durch den Anwendungscontainer und unter Verwendung der Vielzahl von ausführbaren Komponenten.

Description

  • 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 102A102C („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 148A148B mit einem oder mehreren anderen entfernten Computersystemen 142A142 („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 138A138B 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 108A108C („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 120A120N („benutzerdefinierte Kennungen 120”) und den Unterpaket-Kennungen 122A122N („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 400A400C („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.

Claims (18)

  1. Computerlesbares Speichermedium, das mit Anweisungen kodiert ist, die, wenn sie von einem oder mehreren Prozessoren einer Computervorrichtung ausgeführt werden, die Computervorrichtung zu Folgenden veranlassen: Empfangen einer Anforderung zur Ausführung einer bestimmten Funktionalität einer Anwendung durch eine Supervisorkomponente, die an einer Computervorrichtung ausgeführt wird; Abrufen, in Reaktion auf das Bestimmen, dass ein Anwendungscontainer zum Beibehalten installierbarer Unterpakete der Anwendung nicht im Speicher der Computervorrichtung zugeordnet ist, einer Anwendungsdefinition durch die Supervisorkomponente von einem ersten Ferncomputersystem, wobei die Anwendungsdefinition eine Vielzahl von Zuordnungen zwischen den installierbaren Unterpaketen der Anwendung und den benutzerdefinierten Kennungen definiert; Einleiten, in Reaktion auf das Zuordnen des Anwendungscontainers in den Speicher kann die Computervorrichtung, der speziellen Funktionalität der Anwendung durch die Supervisorkomponente und zumindest teilweise auf einer benutzerdefinierten Kennung der Anforderung basierend; Abrufen, in 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 nicht in der Computervorrichtung gespeichert ist, vom Anwendungscontainer, das installierbare Unterpaket, das mehrere ausführbare Komponenten beinhaltet, von einem Ferncomputersystem; und Ausführen der speziellen Funktionalität der Anwendung durch den Anwendungscontainer und unter Verwendung der Vielzahl von ausführbaren Komponenten.
  2. Computerlesbares Speichermedium nach Anspruch 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 die Anweisungen ferner den einen oder die mehreren Prozessoren zu Folgendem veranlasst: Empfangen einer zweiten Anforderung zur Ausführung der zweiten speziellen Funktionalität der Anwendung; Abrufen, in Reaktion darauf, 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 ist, des installierbaren Unterpakets für die zweite spezielle Funktionalität aus dem zweiten Ferncomputersystem durch den Anwendungscontainer, ohne dass ein drittes Unterpaket der Anwendung von dem zweiten Ferncomputersystem abgerufen wird, wobei das dritte Unterpaket nicht auf der Computervorrichtung installiert ist; und Ausführen, 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, der besonderen Funktionalität der Anwendung.
  3. Computerlesbares Speichermedium nach irgendeinem der Ansprüche 1 und 2, wobei die Anweisungen den einen oder die mehreren Prozessoren zu Folgendem veranlassen: Puffern einer Vielzahl von Lebenszyklusanrufen, die von einem Laufzeitsystem der Computervorrichtung empfangen werden, durch eine Lebenszykluskomponente des Anwendungscontainers; und Senden, in Reaktion auf das Ermitteln, dass mindestens eine der Vielzahl von ausführbaren Komponenten in den Speicher der Computervorrichtung geladen ist, des einen oder mehrerer der Vielzahl von Lebenszyklusanrufen an die mindestens eine der Vielzahl von ausführbaren Komponenten.
  4. Computerlesbares Speichermedium nach irgendeinem der Ansprüche 1–3, wobei die Anweisungen ferner den einen oder die mehreren Prozessoren zu Folgendem veranlassen: Empfangen, durch einen Router des Anwendungscontainers, der benutzerdefinierten Kennung; Abfragen einer Routertabelle durchführen, die die Vielzahl von Zuordnungen zwischen den installierbaren Unterpaketen der Anwendung und den benutzerdefinierten Kennungen umfasst, um zu bestimmen, ob das installierbare Unterpaket für die spezielle Funktionalität an der Computervorrichtung gespeichert ist; und Senden, in Reaktion darauf, dass das installierbare Unterpaket für die spezielle Funktionalität nicht lokal an der Computervorrichtung gespeichert ist, einer Nachricht, die eine Kennung des installierbaren Unterpakets beinhaltet, an das zweite entfernte Computersystem.
  5. Computerlesbares Speichermedium nach irgendeinem der Ansprüche 1–4, wobei die Anweisungen ferner den einen oder die mehreren Prozessoren zu Folgendem veranlassen: Identifizieren, durch den Anwendungscontainer, einer Minimalversion einer Bibliothek, die in der Anwendungsdefinition angegeben ist; vor dem Ausführen der Anwendung mit dem Laufzeitcontainer: Abrufen einer Instanz der Bibliothek mit einer Version, die größer oder gleich der minimalen Version ist; Installieren der Instanz der Bibliothek in einer Containerlaufzeit des Anwendungscontainers; und Ausführen der jeweiligen Funktionalität der Anwendung, indem mindestens die jeweilige Funktionalität unter Verwendung der Instanz der Bibliothek in der Containerlaufzeit.
  6. Computerlesbares Speichermedium nach irgendeinem der Ansprüche 1–5, wobei jede der Vielzahl von ausführbaren Komponenten eine kompilierte Klasse in einem objektorientierten Design ist, wobei der Anwendungscontainer als Prozess in einem an der Computervorrichtung ausgeführten Betriebssystem implementiert ist, und wobei das Unterpaket für die spezielle Funktionalität weniger als alle ausführbaren Komponenten beinhaltet, die die Anwendung implementieren.
  7. Computerlesbares Speichermedium nach irgendeinem der Ansprüche 1–6, wobei das erste und das zweite entfernte Computersystem dieselbe Computervorrichtung sind.
  8. Computerlesbares Speichermedium nach irgendeinem der Ansprüche 1–6, wobei das erste und das zweite entfernte Computersystem in einem System beinhaltet sind, das von einem gemeinsamen Betreiber betrieben wird.
  9. Computerlesbares Speichermedium nach irgendeinem der Ansprüche 1–8, wobei der Anwendungscontainer in einer Vielzahl von Anwendungscontainern beinhaltet ist, wobei jeder Anwendungscontainer der Vielzahl von Anwendungscontainern einer jeweiligen Anwendung entspricht, und wobei eine Benutzeroberfläche eines Betriebssystems der Computervorrichtung ein jeweiliges Symbol für jede jeweilige Anwendung beinhaltet, wobei jede jeweilige Anwendung einem jeweiligen Container der Vielzahl von Anwendungscontainern entspricht.
  10. Computerlesbares Speichermedium nach irgendeinem der Ansprüche 1–9, wobei die Anweisungen ferner den einen oder die mehreren Prozessoren zu Folgendem veranlassen: Empfangen, durch den Anwendungscontainer, der benutzerdefinierten Kennung von einer Quelle außerhalb des Anwendungscontainers; und zum automatischen Ausführen, in Reaktion auf das Empfangen der benutzerdefinierten Kennung, der speziellen Funktionalität der Anwendung ohne Benutzereingriff.
  11. Computervorrichtung, umfassend: einen oder mehrere Computerprozessoren; und einen Speicher, umfassend Anweisungen, die, wenn sie von dem einen oder den mehreren Computerprozessoren ausgeführt werden, den einen oder die mehreren Computerprozessoren zu Folgendem veranlassen: Empfangen, durch eine Supervisorkomponente der Computervorrichtung, einer Anforderung zur Ausführung einer bestimmten Funktionalität einer Anwendung; Abrufen, in Reaktion auf die Bestimmung, dass ein Anwendungscontainer zum Beibehalten installierbarer Unterpakete der Anwendung nicht im Speicher der Computervorrichtung zugeordnet ist, durch die Supervisorkomponente, einer Anwendungsdefinition von einem ersten Ferncomputersystem, wobei die Anwendungsdefinition eine Vielzahl von Zuordnungen zwischen den installierbaren Unterpaketen der Anwendung und den benutzerdefinierten Kennungen definiert; Einleiten, in Reaktion auf das Zuordnen des Anwendungscontainers in den Speicher kann die Computervorrichtung, der speziellen Funktionalität der Anwendung durch die Supervisorkomponente und zumindest teilweise auf einer benutzerdefinierten Kennung der Anforderung basierend; Abrufen, in 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 nicht in der Computervorrichtung gespeichert ist, durch den Anwendungscontainer, des installierbaren Unterpakets, das mehrere ausführbare Komponenten beinhaltet, von einem Ferncomputersystem; und Ausführen der speziellen Funktionalität der Anwendung durch den Anwendungscontainer und unter Verwendung der Vielzahl von ausführbaren Komponenten.
  12. Computervorrichtung nach Anspruch 11, wobei die Anforderung zur Ausführung einer bestimmten Funktionalität eine erste Anforderung zum Ausführen einer ersten bestimmten Funktionalität ist, wobei die Anweisungen, wenn sie von dem einen oder den mehreren Computerprozessoren ausgeführt werden, den einen oder die mehreren Computerprozessoren zu Folgendem veranlassen: Empfangen einer zweiten Anforderung zur Ausführung der zweiten speziellen Funktionalität der Anwendung; Abrufen, in Reaktion darauf, 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 ist, des installierbaren Unterpakets für die zweite spezielle Funktionalität aus dem zweiten Ferncomputersystem durch den Anwendungscontainer, ohne dass ein drittes Unterpaket der Anwendung von dem zweiten Ferncomputersystem abgerufen wird, wobei das dritte Unterpaket nicht auf der Computervorrichtung installiert ist; und Ausführen, 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, der besonderen Funktionalität der Anwendung.
  13. Computervorrichtung nach irgendeinem der Ansprüche 11 und 12, wobei die Anweisungen, wenn sie durch den einen oder die mehreren Computerprozessoren ausgeführt werden, bewirken, dass der eine oder die mehreren Computerprozessoren Folgendes umfassen: eine Vielzahl von Lebenszyklusanrufen, die von einem Laufzeitsystem der Computervorrichtung empfangen werden, durch eine Lebenszykluskomponente des Anwendungscontainers puffern; und das Senden, in Reaktion auf das Ermitteln, dass mindestens eine der Vielzahl von ausführbaren Komponenten in den Speicher der Computervorrichtung geladen ist, des einen oder mehrerer der Vielzahl von Lebenszyklusanrufen an die mindestens eine der Vielzahl von ausführbaren Komponenten.
  14. Computervorrichtung nach irgendeinem der Ansprüche 11–13, wobei die Anweisungen, wenn sie durch den einen oder die mehreren Computerprozessoren ausgeführt werden, den einen oder die mehreren Computerprozessoren zu Folgendem veranlassen: Empfangen, durch einen Router, der benutzerdefinierten Kennung; Abfragen, durch den Router des Anwendungscontainers, einer Routertabelle durchführen, die die Vielzahl von Zuordnungen zwischen den installierbaren Unterpaketen der Anwendung und den benutzerdefinierten Kennungen umfasst, um zu bestimmen, ob das installierbare Unterpaket für die spezielle Funktionalität an der Computervorrichtung gespeichert ist; und Senden, in Reaktion darauf, dass das installierbare Unterpaket für die spezielle Funktionalität nicht lokal an der Computervorrichtung gespeichert ist, einer Nachricht, die eine Kennung des installierbaren Unterpakets beinhaltet, an das zweite entfernte Computersystem.
  15. Computervorrichtung nach irgendeinem der Ansprüche 11–14, wobei die Anweisungen, wenn sie durch den einen oder die mehreren Computerprozessoren ausgeführt werden, den einen oder die mehreren Computerprozessoren zu Folgendem veranlassen: Identifizieren, durch den Anwendungscontainer, einer Minimalversion einer Bibliothek, die in der Anwendungsdefinition angegeben ist; vor dem Ausführen der Anwendung mit dem Laufzeitcontainer: Abrufen einer Instanz der Bibliothek mit einer Version, die größer oder gleich der minimalen Version ist; Installieren der Instanz der Bibliothek in einer Containerlaufzeit des Anwendungscontainers; und wobei 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.
  16. Computervorrichtung nach irgendeinem der Ansprüche 11–15, wobei jede der Vielzahl von ausführbaren Komponenten eine kompilierte Klasse in einem objektorientierten Design ist, wobei der Anwendungscontainer als Prozess in einem an der Computervorrichtung ausgeführten Betriebssystem implementiert ist, und wobei das Unterpaket für die spezielle Funktionalität weniger als alle ausführbaren Komponenten beinhaltet, die die Anwendung implementieren.
  17. Computervorrichtung nach irgendeinem der Ansprüche 11–16, wobei das erste und das zweite entfernte Computersystem dieselbe Computervorrichtung sind.
  18. Computervorrichtung nach irgendeinem der Ansprüche 11–16, wobei das erste und das zweite entfernte Computersystem in einem System beinhaltet sind, das von einem gemeinsamen Betreiber betrieben wird.
DE202016008133.1U 2016-01-15 2016-12-29 Containeranwendung mit dynamischem Unterpaket-Lader Active DE202016008133U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/997,167 2016-01-15
US14/997,167 US9817648B2 (en) 2016-01-15 2016-01-15 Application containers with dynamic sub-package loading

Publications (1)

Publication Number Publication Date
DE202016008133U1 true DE202016008133U1 (de) 2017-03-22

Family

ID=57794387

Family Applications (2)

Application Number Title Priority Date Filing Date
DE102016125848.2A Pending DE102016125848A1 (de) 2016-01-15 2016-12-29 Containeranwendung mit dynamischem Unterpaket-Lader
DE202016008133.1U Active DE202016008133U1 (de) 2016-01-15 2016-12-29 Containeranwendung mit dynamischem Unterpaket-Lader

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE102016125848.2A Pending DE102016125848A1 (de) 2016-01-15 2016-12-29 Containeranwendung mit dynamischem Unterpaket-Lader

Country Status (5)

Country Link
US (2) US9817648B2 (de)
CN (2) CN112286589A (de)
DE (2) DE102016125848A1 (de)
GB (1) GB2547536A (de)
WO (1) WO2017123404A1 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170010574A (ko) * 2015-07-20 2017-02-01 삼성전자주식회사 정보처리장치, 영상처리장치 및 그들의 제어방법
US10409657B2 (en) 2016-01-15 2019-09-10 Google Llc Identifiers across application instances
US9817648B2 (en) 2016-01-15 2017-11-14 Google Inc. Application containers with dynamic sub-package loading
US10158610B2 (en) * 2016-07-06 2018-12-18 Adp, Llc Secure application communication system
US10621333B2 (en) * 2016-08-08 2020-04-14 International Business Machines Corporation Install-time security analysis of mobile applications
US10346189B2 (en) * 2016-12-05 2019-07-09 Red Hat, Inc. Co-locating containers based on source to improve compute density
US10416979B2 (en) * 2017-05-16 2019-09-17 Red Hat, Inc. Package installation on a host file system using a container
CN107220059B (zh) * 2017-06-14 2021-03-23 北京小米移动软件有限公司 应用界面的显示方法及装置
US11265365B2 (en) 2017-06-26 2022-03-01 Net Law Group, Inc. Platform-specific thin-client delivery of an application developed on a cloud-based enterprise-customizable multi-tenant service interface
US10833955B2 (en) * 2018-01-03 2020-11-10 International Business Machines Corporation Dynamic delivery of software functions
JP7069969B2 (ja) * 2018-03-29 2022-05-18 株式会社リコー 情報処理装置、情報処理方法及び情報処理プログラム
US11190357B2 (en) * 2018-05-18 2021-11-30 Avive Solutions, Inc. Framework for ensuring software components are not corrupted
US10901798B2 (en) * 2018-09-17 2021-01-26 International Business Machines Corporation Dependency layer deployment optimization in a workload node cluster
US11416274B2 (en) * 2018-12-07 2022-08-16 International Business Machines Corporation Bridging a connection to a service by way of a container to virtually provide the service
US10846102B2 (en) 2019-03-05 2020-11-24 International Business Machines Corporation Loading dependency library files from a shared library repository in an application runtime environment
US11113249B2 (en) 2019-04-05 2021-09-07 Sap Se Multitenant application server using a union file system
US11232078B2 (en) 2019-04-05 2022-01-25 Sap Se Multitenancy using an overlay file system
US10942723B2 (en) * 2019-04-05 2021-03-09 Sap Se Format for multi-artefact software packages
US10809994B1 (en) 2019-04-05 2020-10-20 Sap Se Declarative multi-artefact software installation
US10956140B2 (en) 2019-04-05 2021-03-23 Sap Se Software installation through an overlay file system
EP4014113A4 (de) * 2019-08-16 2023-08-16 Nubix, Inc. System und verfahren zum programmieren von geräten
US11212336B2 (en) * 2020-04-30 2021-12-28 Software Ag Systems and/or methods for dynamically configuring and evaluating rules with dynamic and/or user inputs at runtime
US11385888B1 (en) * 2021-01-20 2022-07-12 Vmware, Inc. Updating container runtime using standby virtual machines
US11900173B2 (en) * 2021-05-18 2024-02-13 Kyndryl, Inc. Container runtime optimization
CN114398094B (zh) * 2021-12-21 2023-08-18 中国银联股份有限公司 小程序启动方法、装置、设备及计算机可读存储介质
US20230393826A1 (en) * 2022-06-02 2023-12-07 Sap Se Fast retrieving hierarchical components on multi-tenant cross region multi-cloud

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453334B1 (en) 1997-06-16 2002-09-17 Streamtheory, Inc. Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching
US6446109B2 (en) 1998-06-29 2002-09-03 Sun Microsystems, Inc. Application computing environment
US6523166B1 (en) 1998-09-21 2003-02-18 Microsoft Corporation Method and system for on-demand installation of software implementations
US6317143B1 (en) 1999-01-26 2001-11-13 Gateway, Inc. Programmable graphical user interface control system and method
DE19924795A1 (de) * 1999-05-29 2000-11-30 Philips Corp Intellectual Pty Netzwerk mit mehreren Terminals und einem auf allen Terminals verteilten Softwaresystem
US6031747A (en) * 1999-08-02 2000-02-29 Lockheed Martin Missiles & Space Company Interleaved synchronous flyback converter with high efficiency over a wide operating load range
US7181686B1 (en) 1999-10-29 2007-02-20 International Business Machines Corporation Selecting screens in a GUI using events generated by a set of view controllers
US20020129351A1 (en) 2001-03-07 2002-09-12 Nexusedge Technologies Pty. Ltd. Software engine and method for software application loading
JP3687587B2 (ja) 2001-03-27 2005-08-24 ソニー株式会社 データ処理システム及びデータ処理方法、情報処理装置及び情報処理方法、並びにコンピュータ・ソフトウェア
US8126722B2 (en) * 2001-12-20 2012-02-28 Verizon Business Global Llc Application infrastructure platform (AIP)
US7047448B2 (en) 2002-11-21 2006-05-16 Bitfone Corporation Software self-repair toolkit for electronic devices
US20050049790A1 (en) 2003-09-03 2005-03-03 Microsoft Corporation System and method for validating whether a software application is properly installed
DE602004020492D1 (de) 2003-10-02 2009-05-20 Research In Motion Ltd Selektives laden und konfigurieren einer anwendung auf einer drahtlosen einrichtung unter verwendung von relationalen informationen
US7698383B2 (en) 2004-02-27 2010-04-13 Research In Motion Limited System and method for building component applications using metadata defined mapping between message and data domains
US9357031B2 (en) 2004-06-03 2016-05-31 Microsoft Technology Licensing, Llc Applications as a service
US7680758B2 (en) * 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US8095940B2 (en) * 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
JP4731960B2 (ja) 2005-03-15 2011-07-27 株式会社日立製作所 プーリング方法、システム及びプログラム
DE102006012311A1 (de) 2006-03-17 2007-09-20 Deutsche Telekom Ag Verfahren und Vorrichtung zur Pseudonymisierung von digitalen Daten
KR20070109310A (ko) 2006-05-10 2007-11-15 엘지전자 주식회사 이동통신단말기와 메모리제어방법 및 소프트웨어 모듈업데이트방법
JP5011927B2 (ja) 2006-10-02 2012-08-29 セイコーエプソン株式会社 アプリケーション実行システム、コンピュータ、アプリケーション実行システムのアプリケーション実行方法およびプログラム
US8112749B2 (en) 2007-06-19 2012-02-07 Oracle America, Inc. Dynamic, temporary resource pools for use in virtualization
US20090133014A1 (en) 2007-11-16 2009-05-21 Nokia Corporation Methods, apparatuses and computer program product for automatic download of software dependencies on installation
US9665381B2 (en) 2008-08-29 2017-05-30 Hewlett-Packard Development Company, L.P. Combining interfaces of shell applications and sub-applications
US8484728B2 (en) 2009-06-03 2013-07-09 Apple Inc. Managing securely installed applications
EP2519903A1 (de) 2009-12-31 2012-11-07 Nokia Corp. Verfahren, vorrichtung und computerprogrammprodukt für automatische bereitstellung von inhalten auf einer vorrichtung
US8495625B1 (en) 2010-07-27 2013-07-23 Symantec Corporation Method and system for creation of streamed files on-demand
WO2012146985A2 (en) 2011-04-28 2012-11-01 Approxy Inc. Ltd. Adaptive cloud-based application streaming
US8171137B1 (en) 2011-05-09 2012-05-01 Google Inc. Transferring application state across devices
US20130019237A1 (en) * 2011-07-12 2013-01-17 Apple Inc. System and method for linking pre-installed software to a user account on an online store
US9773102B2 (en) 2011-09-09 2017-09-26 Microsoft Technology Licensing, Llc Selective file access for applications
US8943150B2 (en) * 2011-09-12 2015-01-27 Fiserv, Inc. Systems and methods for customizing mobile applications based upon user associations with one or more entities
CN102439564B (zh) 2011-10-24 2014-03-26 华为技术有限公司 在Linux容器中启动应用程序的方法和系统
CN104166573B (zh) * 2011-12-12 2018-01-16 北京奇虎科技有限公司 软件安装方法及装置
US8832296B2 (en) 2011-12-15 2014-09-09 Microsoft Corporation Fast application streaming using on-demand staging
US8856805B2 (en) * 2011-12-29 2014-10-07 Oracle International Corporation Virtual channel for embedded process communication
US8819798B2 (en) 2011-12-29 2014-08-26 Ebay Inc. System and method for transferring states between electronic devices
CN105094889B (zh) * 2012-03-29 2018-12-04 北京奇虎科技有限公司 一种应用程序插件加载方法及装置
US8782744B1 (en) 2012-06-15 2014-07-15 Amazon Technologies, Inc. Managing API authorization
US9075693B2 (en) 2012-06-27 2015-07-07 Google Inc. Methods for updating applications
US8990710B1 (en) * 2012-08-30 2015-03-24 Google Inc. Building native computer applications using a browser platform
US9176726B2 (en) 2013-01-28 2015-11-03 Paptap Ltd Method and apparatus for developing, distributing and executing applications
US9854047B2 (en) 2013-02-19 2017-12-26 Red Hat, Inc. Service pool for multi-tenant applications
US9772835B1 (en) 2013-03-13 2017-09-26 Amazon Technologies, Inc. Modification of program code for execution in a multi-tenant or distributed computing environment
US8875247B2 (en) 2013-03-14 2014-10-28 Facebook, Inc. Instant personalization security
EP2782038A1 (de) 2013-03-19 2014-09-24 STMicroelectronics (Grenoble 2) SAS Ressourcenverwaltung in einem Prozessor für vertrauenswürdige und nicht-vertrauenswürdige Anwendungen
US9032106B2 (en) 2013-05-29 2015-05-12 Microsoft Technology Licensing, Llc Synchronizing device association data among computing devices
US20140365336A1 (en) 2013-06-07 2014-12-11 Bby Solutions, Inc. Virtual interactive product display with mobile device interaction
US9612815B1 (en) 2013-08-22 2017-04-04 Ca, Inc. Method and tool for automating deployment of reference implementation architectures for pre-integrated multi-product solutions
US10181028B2 (en) 2014-02-21 2019-01-15 Samsung Electronics Co., Ltd. Method and apparatus to sandbox run-time android applications with lightweight container
CN103793257B (zh) * 2014-03-07 2016-08-24 中南大学 一种Android程序的流式执行方法
US10037204B2 (en) 2014-04-22 2018-07-31 Delphix Corp. Version control of applications
US9116767B1 (en) 2014-06-06 2015-08-25 International Business Machines Corporation Deployment pattern monitoring
US9871745B2 (en) 2014-11-12 2018-01-16 International Business Machines Corporation Automatic scaling of at least one user application to external clouds
US10505997B2 (en) 2014-12-10 2019-12-10 Facebook, Inc. Providing persistent activity sessions across client devices
US9954936B2 (en) 2015-03-02 2018-04-24 International Business Machines Corporation Migrating legacy applications to a multi-tenant computing environment
US9705973B2 (en) 2015-04-29 2017-07-11 International Business Machines Corporation Release and management of composite applications on PaaS
US9817648B2 (en) 2016-01-15 2017-11-14 Google Inc. Application containers with dynamic sub-package loading
US10409657B2 (en) 2016-01-15 2019-09-10 Google Llc Identifiers across application instances

Also Published As

Publication number Publication date
GB201622159D0 (en) 2017-02-08
US9817648B2 (en) 2017-11-14
US20170206071A1 (en) 2017-07-20
GB2547536A (en) 2017-08-23
US10445083B2 (en) 2019-10-15
CN107015823B (zh) 2020-10-27
DE102016125848A1 (de) 2017-07-20
CN107015823A (zh) 2017-08-04
CN112286589A (zh) 2021-01-29
US20180060055A1 (en) 2018-03-01
WO2017123404A1 (en) 2017-07-20

Similar Documents

Publication Publication Date Title
DE202016008133U1 (de) Containeranwendung mit dynamischem Unterpaket-Lader
US10467025B2 (en) Managing delivery of code and dependent data using application containers
DE102014101392B4 (de) Konfigurieren eines Geräts ausgehend von der Nähe zu anderen Geräten
RU2419854C2 (ru) Основанное на шаблоне управление службами
EP3188069A1 (de) Netzwerkbasiertes permissionierungssystem
US10445335B2 (en) Computing environment connectivity system
WO2018045489A1 (zh) 一种数据采集方法、装置及系统
JP7453426B2 (ja) ネットワーク管理システム、方法、装置及び電子機器
CN105915657B (zh) 数据的同步方法、装置及客户端
CN114244595A (zh) 权限信息的获取方法、装置、计算机设备及存储介质
CN112860343B (zh) 配置变更方法、系统、装置、电子设备以及存储介质
CN110704097A (zh) 一种数据收集方法、装置及电子设备和存储介质
US9594762B2 (en) Intelligent file management
CN113742366A (zh) 数据处理方法、装置、计算机设备及存储介质
US20220236983A1 (en) Computer Implementation Method for Software Architecture Analysis and Software Architecture Analysis Apparatus
WO2022228156A1 (zh) 一种策略编排处理方法、装置、设备、系统及存储介质
US9043464B1 (en) Automatically grouping resources accessed by a user
CN114185734A (zh) 一种监控集群的方法、装置及电子设备
CN112558968A (zh) 一种资源树视图的生成方法、装置、设备及存储介质
US20150135050A1 (en) Form field creation systems and methods
CN115550141A (zh) 事件处理方法、装置、电子设备及可读存储介质
CN111176959B (zh) 跨域的应用服务器的预警方法、系统及存储介质
CN116155786A (zh) 车辆信号模拟调试系统、方法、电子设备及储存介质
CN112988125A (zh) 一种数据桥接方法、装置、设备和存储介质
CN116795339A (zh) 服务接口的生成方法、装置、设备及存储介质

Legal Events

Date Code Title Description
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years