-
Verweis
-
Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, 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.
-
TECHNISCHES GEBIET
-
Diese Offenbarung bezieht sich im Allgemeinen auf systemübergreifende Applikationen, die als native Applikationen laufen aber dennoch programmiert sind, um Online-Technologien zu verwenden.
-
HINTERGRUND
-
Normalerweise muss man ein bestimmtes Betriebssystem oder einen bestimmten Webbrowser verwenden, um auf einen Online-Laden oder digitalen Markt zuzugreifen. Es kann aber sein, dass jemand auf einen Online-Laden oder digitalen Markt unter Verwendung eines beliebigen Betriebssystems oder Webbrowsers zugreifen und in der Lage sein will, Applikationen von einem digitalen Markt unabhängig von der Beschaffenheit des Betriebssystems oder Browsers herunterzuladen. Manche Leute schätzen auch die Möglichkeit, Applikationen „nativ” auf einem Clientcomputer laufen zu lassen. Typische Online-Applikationen erlauben aber keinen Zugang zu lokalen Systemressourcen wie z. B. zu Dateisystemen, nativen Fenstern, Grafikprozessoren, Mikrophonen oder Kameras und sind deshalb vielleicht eher begrenzt. Im Allgemeinen haben Online-Applikationen ein eher begrenztes Sicherheitsmodell, das bestimmt, in welchem Ausmaß eine lokale Systemressource für die Online-Applikation zugänglich ist.
-
Es kann auch für Entwickler von Vorteil sein, wenn sie nicht unterschiedliche Programmiertechniken verwenden oder viele verschiedene Versionen von Applikationen entwickeln müssen, damit die Applikation auf verschiedenen Betriebssystemplattformen läuft (z. B. WINDOWS, MAC oder LINUX). Normalerweise müssen Entwickler eine Applikation für jede Plattform aufbauen. Es ist für Entwickler auch günstig, wenn die gleichen Applikationen auch im Internet laufen und über jeden beliebigen Webbrowser heruntergeladen werden können. Des Weiteren wollen Entwickler vielleicht JAVASCRIPT, HTML, CSS oder eine andere Online-Technologie verwenden, um Applikationen zu entwickeln, die nativ auf Computern und mobilen Geräten laufen können. Entwickler wollten auch, dass die gleichen Applikationen als Online-Applikationen über einen Webbrowser sowie auch nativ laufen und damit Zugang zu mindestens einigen nativen Ressourcen haben. Deshalb besteht ein Bedarf an Systemen und Methoden, um das Defizit der gegenwärtigen Technologie zu bewältigen und andere neue und innovative Eigenschaften zu bieten.
-
ZUSAMMENFASSUNG
-
Eine Methode und ein System, das eine systemübergreifende Installation von Applikationen gewährleistet, einschließlich der Installation über einen Server einer nativ laufenden, nur mit Online-Technologien kodierten Applikation und der Installation einer individuellen Laufzeitumgebung, die der nativ laufenden Applikation Zugang zu Dienstleistungen auf der Systemebene des Computers gibt, die nicht für Online-Applikationen verfügbar sind. Die individuelle Laufzeitumgebung kann die Installation und der Deinstallation der nativ laufenden Applikation kontrollieren und die nativ laufende Applikation ist so konfiguriert, dass sie unabhängig von einem Webbrowser arbeitet.
-
Die Details einer oder mehrerer Ausführungen sind in den nachstehenden zugehörigen Zeichnungen und der Beschreibung dargelegt. Andere Features anhand der Beschreibung und Zeichnungen sowie anhand der Ansprüche ersichtlich werden.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein schematisches Diagramm eines Systems für die systemübergreifende Installation von Online-Applikationen.
-
2 ist ein Beispiel eines Blockdiagramms einer Laufzeit unter Verwendung einer Multiprozess-Konfiguration.
-
3 ist ein Diagramm eines Beispiels einer Benutzerschnittstelle für native Applikationen, nativ laufende Applikationen und Online-Applikationen.
-
4A ist ein Flussdiagramm eines Vorgangs für die systemübergreifende Installation von Online-Applikationen.
-
4B ist ein Flussdiagramm eines Lebenszyklus einer nativ laufenden Applikation.
-
5 zeigt ein Beispiel eines Computergeräts und eines mobilen Computergeräts, die verwendet werden können, um die hier beschriebenen Techniken zu implementieren.
-
Gleiche Verweissymbole in den verschiedenen Zeichnungen bezeichnen gleiche Elemente.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die hier beschriebenen Systeme und Methoden ermöglichen eine systemübergreifende Installation von nativ laufenden Applikationen, die mit Online-Technologien kodiert sind (wie HTML, Javascript, CSS, usw.). Die nativ laufenden Applikationen können über eine individuelle, lokal auf einen Clientcomputer installierte Laufzeitumgebung laufen. Die nativ laufenden Applikationen können Zugang zu den Ressourcen des lokalen Rechners bieten und können auch Zugang zu anderen Online-Dienstleistungen wie z. B. Cloud-Speicherung, Bearbeitung von Online-Dokumenten und von Fotos gewähren. Weil sie mit Online-Technologien kodiert sind, können die nativ laufenden Applikationen auch konfiguriert (z. B. verpackt) sein, um auf einem Webbrowser zu laufen, ohne dass es einer weiteren Kodierung durch einen Entwickler bedarf. Eine nativ laufende Applikation kann auf jedem Betriebssystem von jedem Browser aus heruntergeladen und installiert werden, wann immer die individuelle Laufzeit installiert ist. Vor der Installation einer nativ laufenden Applikation kann der Browser automatisch feststellen, ob die individuelle Laufzeit bereits auf einem Computer installiert ist. Falls die individuelle Laufzeit nicht bereits installiert ist, kann der Browser automatisch die individuelle Laufzeit installieren, zum Beispiel durch einmaliges Herunterladen, einschließlich der Applikation und der Laufzeit. Die Laufzeit läuft mithilfe einer Multiprozess-Architektur und installiert die nativ laufenden Applikationen in einer Abschottung (Sandbox), so dass sie, wenn die nativ laufenden Applikationen deinstalliert werden, vollständig vom Clientcomputer entfernt werden.
-
1 ist ein schematisches Blockdiagramm einer beispielhaften Ausführungsform eines Systems 100, das eine systemübergreifende Installation von Online-Applikationen gewährleistet. In den verschiedenen Implementierungen kann das System 100 die Client-Datenverarbeitungsgeräte 102A, 102B, 102C (wie z. B. Desktop, Notebook-Computers, Netbook-Computers, Tablets, Smartphone etc.) umfassen. Das Client-Computergerät 102A kann einen oder mehrere Prozessoren (CPU) 104 und eine oder mehrere Speichereinheiten 106 beinhalten. Das Client-Computergerät 102A kann ein Betriebssystem (O/S) 108, eine Laufzeit 120 und verschiedene Applikationen (110, 124 und 126) ausführen, die ein Benutzerschnittstellenfenster anzeigen können (z. B. Webbrowser 112). Das Client-Computergerät 102A kann einen Pufferspeicher 118 umfassen. Das Kunden-Computergerät 102A kann eine nativ laufende Applikation 124 sowie eine oder mehrere native Applikationen 126 umfassen. Die Applikation 110 ist ein weiteres Beispiel einer nativen Applikation und das Benutzerschnittstellenfenster 112 der Applikation 110 ist ein Webbrowser. Andere Beispiele von nativen Applikationen 126 umfassen Textverarbeitungsapplikationen, Bildbearbeitungsapplikationen, Mail-Applikationen, Medienspieler, Taschenrechner, usw.
-
Eine „nativ laufende Applikation” 124 ist eine Applikation, die nur mithilfe einer Online-Technologie (hier definiert als Code, der direkt von einem Webbrowser ausgeführt werden kann), wie z. B. HTML, JAVASCRIPT oder CSS kodiert wird, die aber eine Applikation ist, die wie eine native Applikation aussieht und sich dementsprechend verhält (und nicht an einen Webbrowser gebunden ist) und die nativ-ähnliche, nicht für Online-Applikationen verfügbare Fähigkeiten besitzt. Eine nativ laufende Applikation 124 kann auch auf einen Webbrowser wie z. B. dem Webbrowser 112 laufen.
-
Eine nativ laufende Applikation 124 kann von einem Markt-Server 150 über einen Webbrowser wie z. B. den Webbrowser 112 heruntergeladen und auf dem Client-Computergerät 102A installiert werden. Die nativ laufende Applikation 124 kann mithilfe der Laufzeit 120 laufen, die ausführlicher unten beschrieben wird. Die nativ laufende Applikation 124 kann so konfiguriert werden, dass sie zum Beispiel von einem Prozessor 104 des Clientgerätes mithilfe der Laufzeit 120 ausgeführt werden kann. Da die nativ laufende Applikation 124 mit Online-Technologien kodiert ist, ist kein Kompilierschritt notwendig. Stattdessen kann die nativ laufende Applikation 124 einfach verpackt (z. B. in einem .CRX-Format oder gezippt, zum Beispiel mittels einer Unterschrift oder Verifikation) und an das Client-Kundencomputergerät 102A geliefert werden, zum Beispiel über den Webbrowser 112 von einem digitalen Markt aus wie z. B. dem Markt-Server 150, wie unten ausführlicher beschrieben. Die Laufzeit 120 kann die nativ laufende Applikation 124 als eine verpackte Datei (z. B. .CRX-Dateien) akzeptieren und dann die nativ laufende Applikation 124 ausführen. Die nativ laufende Applikation 124 kann zum Beispiel lokal geladen werden, damit sie weniger von einem Netzwerk abhängig ist als eine Online-Applikation.
-
Die Laufzeit 120 kann eine Umgebung sein, die über dem nativen O/S 108 läuft und eine Multiprozess-Architektur benutzt. Wenn also eine nativ laufende Applikation 124 abstürzt, verliert der Benutzer keine der anderen nativ laufenden Applikationen, die gleichzeitig auch über die Laufzeit 120 laufen. Jede Applikation läuft als ein neuer Vorgang auf der individuellen Laufzeit, wie ausführlicher unten in Bezug auf 2. beschrieben wird. Die Laufzeit 120 kann als Zwischenumgebung wirken, die es einer nativ laufenden Applikation 124 ermöglicht, auf jedem beliebigen Computergerät mithilfe eines Betriebssystems zu laufen, solange die Laufzeit 120 auf einem Computergerät wie z. B. dem Computergerät 102A installiert ist. Die Laufzeit 120 kann es der nativ laufenden Applikation 124 ermöglichen, sich so zu verhalten, als wäre sie eine native Applikation, obwohl die nativ laufende Applikation 124 nicht wirklich vom O/S 108 ausgeführt wird (aber dennoch in der Lage ist, auf Teile des O/S 108 zuzugreifen). In manchen Implementierungen kann die Laufzeit 120 auch dazu verwendet werden, um Applikation 110 auszuführen (einschließlich Webbrowser 112).
-
Die Laufzeit 120 selbst kann auch von einem Markt-Server 150 (oder einem anderen Server) über einen Webbrowser wie z. B. den Webbrowser 112 heruntergeladen und auf dem Client-Computergerät 102A installiert werden. In manchen Implementierungen kann die Laufzeit 120 bereits auf dem Client-Computergerät 102A installiert sein, wenn die nativ laufende Applikation 124 installiert wird. In anderen Implementierungen kann die Laufzeit 120 in einem einmaligen Download mit der nativ laufenden Applikation 124 vor der Installation der nativ laufenden Applikation 124 zusammengelegt und/oder heruntergeladen oder installiert werden.
-
Die nativ laufende Applikation 124 kann über die Laufzeit 120 auf ein Netzwerk 190 zugreifen und kann auch auf einen oder mehreren nativen Ressourcen 122 eines Clientcomputers zugreifen. Die nativen Ressourcen 122 können jede beliebige Ressource umfassen, die im Computergerät 102A enthalten oder damit lokal verbunden ist. Zum Beispiel können die native Ressourcen 122 native Fenster (z. B. jedes beliebige Fenster außerhalb eines Webbrowsertabs), eine Grafikverarbeitungseinheit (GPU), eine Internetkamera, eine Grafikkarte, ein Mikrofon, einen Drucker, ein Dateisystem einschließlich von Dokumenten, Bildern, sonstigen Medien oder sonstigen Ressourcen, wie z. B. das an das Computergerät 102A angeschlossene Gerät 102D, umfassen. Ähnlich den Online-Applikationen kann die nativ laufende Applikation 124 mit Online-Technologien kodiert werden (die weiter unten ausführlicher beschrieben sind), aber im Gegensatz zu den Online-Applikationen kann die nativ laufende Applikation 124 auf die nativen Ressourcen 122 des Client-Computergeräts 122 zugreifen.
-
Die nativ laufende Applikation 124 kann offline als Default laufen. Die nativ laufende Applikation 124 kann auch lokal geladen werden. In einigen Implementierungen kann es sein, dass der Benutzer, sobald er die nativ laufende Applikation 124 installiert hat, die volle Kontrolle über den Lebenszyklus der nativ laufenden Applikation 124 hat. Der Lebenszyklus der nativ laufenden Applikation 124 hängt nicht von einem Webbrowserfenster oder einer Internetverbindung ab. Der Lebenszyklus einer nativ laufenden Applikation ist weiter unten in Bezug auf 4B ausführlicher beschrieben. Die nativ laufende Applikation 124 kann schnell geöffnet und geschlossen werden und das System 100 kann die nativ laufende Applikation 124 jederzeit schließen, um die Leistung zu verbessern (zum Beispiel mithilfe der Laufzeit 120). Benutzer können die nativ laufende Applikation 124 vollkommen deinstallieren. In einigen Implementierungen können die mit der nativ laufenden Applikation 124 zusammenhängenden Benutzerdaten lokal gespeichert werden, während die nativ laufende Applikation 124 offline ist, zum Beispiel in Speichereinheit 106 und dann (mit Erlaubnis des Benutzers) mit einem Datenserver (z. B. Server 130 oder Synchronisierungsserver 170) synchronisiert wird, sobald der Benutzer des Client-Computergeräts 102A online ist.
-
Außerdem kann die nativ laufende Applikation 124 auf verschiedene Ferndienstleistungen 140 zugreifen, die eventuell über einen Fernserver zugänglich sind. Der Zugang zu solchen Dienstleistungen 140 kann über verschiedene Javascript-APIs erfolgen, die von der Laufzeit 120 gehostet sind.
-
APIs können auch für andere Fähigkeiten verfügbar sein. Solche APIs sind nicht für Online-Applikationen, Websites oder für native Applikationen verfügbar. Zum Beispiel können gemeinsame Daten-APIs einer nativ laufenden Applikation 124 Zugang zu den Daten auf dem Computergerät 102A verschaffen, falls ein solcher Zugang auf eine vermittelte Art erfolgt, damit die nativ laufende Applikation 124 zum Beispiel auf Kontakte, Bilder, Fotos, Medien, Videos, Musik oder Filme zugreifen kann. Ein solcher Zugang wird über gemeinsame Daten-APIs geboten. Außerdem können APIs mit Gerätfähigkeit der nativ laufenden Applikation 124 Zugang zu Hardwaregeräten wie z. B. einem USB-Port oder zu einem an das Computergerät 102A angeschlossenen BLUETOOTH-Gerät verschaffen. Die nativ laufende Applikation 124 kann an USB-Geräte angeschlossen werden und kann von und auf die seriellen Anschlüsse eines Benutzers schreiben, zum Beispiel, um Nachrichten an jedes beliebige, an ein lokales Computergerät 102A angeschlossene Gerät zu senden, wie z. B. an das Gerät 102D. Weiterhin können Dienstleistungs-APIs Zahlungen, Identitäten oder sonstige Dienstleistungen an die nativ laufende Applikation 124 erbringen.
-
Wie 1 zeigt, kann das System 100 einen Server 130 umfassen, der einen oder mehrere Prozessoren 132, eine oder mehrere Speichereinheiten 134, ein Betriebssystem 136 und Dienstleistungen 140 beinhält. Dienstleistungen 140 können z. B. über den Server 130 zur Verfügung gestellt und über eine API erreicht werden, die von der Laufzeit 120 gehostet wird. Wie oben besprochen, können Dienstleistungen mm Beispiel Zahlungen oder Identitätsdienstleistungen umfassen. Zum Beispiel kann ein Benutzer Identitätsdienstleistungen in Anspruch nehmen, um es einer nativ laufenden Applikation 124 zu erlauben, auf die Identität eines Benutzers zuzugreifen, ohne den Benutzer zu zwingen, Identitätsdaten jedes Mal neu einzugeben, wenn der Benutzer die nativ laufende Applikation 124 laufen lässt. In ähnlicher Weise kann ein Benutzer Zahlungsdienstleistungen in Anspruch nehmen, um es einer nativ laufenden Applikation 124 zu erlauben, auf die Zahlungsinformationen eines Benutzers zuzugreifen, ohne den Benutzer zu zwingen, solche Zahlungsinformationen jedes Mal neu einzugeben, wenn der Benutzer die nativ laufende Applikation 124 laufen lässt.
-
Die APIs, die einer nativ laufenden Applikation 124 von der Laufzeit 120 vorgehalten werden, können auch gemeinsame Daten-Fähigkeiten umfassen, die es dem Benutzer erlauben, die nativ laufende Applikation 124 in Anspruch zu nehmen, um Daten auf einen Server wie den Server 130 hochzuladen (oder Daten herunterzuladen). Ein Beispiel einer gemeinsamen Daten-Fähigkeit kann das Hochladen von Daten oder Speicherdienstleistungen umfassen, die es z. B. einem Benutzer erlauben, Fotos vom Client-Computergerät 102A über eine nativ laufende Applikation 124 hochzuladen. Die Fotos können hochgeladen werden, um Sicherungsspeicherung auf einem Fernserver wie dem Server 130 zur Verfügung zu stellen. Zum Beispiel kann in einer Implementierung eine nativ laufende Applikation 124 automatisch auf die Fotos zugreifen, die an einer Stelle der Speichereinheit 106 gespeichert sind, indem sie die durch ein Javascript-API gebotenen Fähigkeiten verwendet, ohne einen zusätzlichen Input vom Benutzer zu verlangen (aber mit der vorherigen Erlaubnis des Benutzers). Die nativ laufende Applikation 124 kann mithilfe der API automatisch nur auf die Fotos und nicht auf andere Dateien (z. B. auf Basis einer Dateikategorie, eines Dateinamens, einer Dateigröße oder sonstiger Kriterien) zugreifen und die Fotos auch automatisch (mit der Erlaubnis des Benutzers) auf ein mit dem Benutzer verbundenes Konto hochladen. Die Fotos können zum Beispiel auf Server 130 mithilfe des Networks 190 hochgeladen werden.
-
Andere Fähigkeiten können auch durch gemeinsame Daten-APIs geboten werden, zum Beispiel um Zugang zu einer Mediengalerie, Musik, Filmen oder Dokumenten zu verschaffen. Eine mit Musik verbundene nativ laufende Applikation kann zum Beispiel nur auf einen Teil eines Musik-enthaltenden Dateisystems zugreifen, damit die Applikation etwas mit der Musik tun kann, wie z. B. die Musik mit einem Benutzerkonto synchronisieren. Mithilfe einer gemeinsamen Daten-API kann eine nativ laufende Applikation 124 auf alle auf Gerät 102A befindliche Musik zugreifen. Die API kann bestimmen, welche Musik auf Gerät 102A gespeichert wird und die Applikation kann die Musik holen und mit einem Fernserver synchronisieren (z. B. Server 130). Die nativ laufende Applikation 124 braucht keine separate Steckverbindung, um die Musik zu holen und zu synchronisieren, sondern die nativ laufende Applikation 124 kann Dateien auf ein lokales System auf einer wegen der Vorgangsisolierung sicheren, von der Laufzeit 120 kontrollierten Art und Weise lesen oder schreiben, wie weiter unten ausführlich in Bezug auf 2. besprochen wird.
-
Weiterhin können die APIs gerätfähige APIs umfassen, was der nativ laufenden Applikation 124 Zugang zu den Geräten verschafft, zu denen die Online-Applikationen normalerweise keinen Zugang haben. Zum Beispiel kann die nativ laufende Applikation 124 Zugang zu einem USB, zu einem protokoll-losen Network oder zu BLUETOOTH-Geräten haben.
-
In den verschiedenen Implementierungen kann der Webbrowser 112 eine oder mehreren Online-Applikationen 128 beinhalten oder damit verbunden sein. In diesem Zusammenhang, kann eine „Webanwendung” konfiguriert sein, um eine einzelne Aufgabe oder mehrere Aufgaben für den Nutzer durchzuführen. In einer solchen Implementierung kann die Online-Applikation so konfiguriert sein, dass sie der Webbrowser ausführen oder interpretieren kann. Das ist vergleichbar mit den nativen Applikationen (z. B. die native Applikation 126), die maschinenausführbaren Code enthalten und so konfiguriert sind, dass sie ein Prozessor oder das Betriebssystem des Clientgerätes direkt ausführen kann, während eine Online-Applikation vielleicht nicht in der Lage ist, etwas ohne die Hilfe des Webbrowsers auszuführen oder zu zeigen. Dies auch im Vergleich mit der nativ laufenden Applikation 124, die keinen Webbrowser braucht. Online-Applikationen laufen also innerhalb eines Browsers mit einer dedizierten Benutzerschnittstelle und bieten gewöhnlich eine Funktionalität und eine Erfahrung, die reicher und interaktiver ist als eine alleinstehende Website, die aber weniger umständlich und monolithisch sind als die native Applikation 126. Beispiele von Online-Applikationen sind Spiele, Fotoeditoren und Videospieler, die innerhalb des Webbrowsers 112 laufen.
-
Online-Applikationen können zumindest einen Teil einer Website enthalten, die selbst Webseiten sowie einige Metadaten enthält, die für die Online-Applikation oder den Benutzer der Online-Applikation besonders zweckdienlich sind und die es der Online-Applikation erlauben, eine bestimmte Funktionalität für den Benutzer durchzuführen.
-
In den verschiedenen Implementierungen kann der Webbrowser einen oder mehrere Browserverlängerungen beinhalten und konfiguriert sein, um mit ihnen zu interagieren. In diesem Zusammenhang, kann eine „Browser-Erweiterung” eine oder mehrere gepackte oder als ein definierbares Ganzes zusammengefasste Websites beinhalten, und so konfiguriert sein, dass sie die Funktionalität auf den Webbrowser ausdehnt. Solcherart bieten Erweiterungen auch zusätzliche Funktionalität für den Browser, doch hat die durch eine Erweiterung gebotene Funktionalität im Unterschied zu Anwendungen kaum eine oder keine Schnittstellenkomponente. Stattdessen dehnen Weberweiterungen die Funktionalität des Browsers und der dort eingesehenen Websites aus. Weberweiterungen können zum Beispiel die Funktionalität des Browsers durch die Hinzufügung einer neuen Taste auf der Adressleiste ausdehnen, wie etwa einen ständig sichtbaren Währungsrechner. Solche Buttons können auch auf die aktuell betrachtete Website angewendet werden – so kann beispielsweise das Klicken auf den Wechselkursrechner-Button alle Preise auf der Website, die einem Benutzer angezeigt werden, in eine vom Nutzer ausgewählte Währung umrechnen. In einem anderen Beispiel kann eine Erweiterung installiert sein, sodass, wenn ein Nutzer mit einem Cursor über ein Vorschaubild fährt, so lange auf einer vom Browser ausgeführten Website eine größere Version des Bildes angezeigt wird, bis der Nutzer den Cursor vom Bild wegbewegt. In einem anderen Beispiel kann eine Erweiterung installiert sein, um einen Button „Dies versenden” neben jedem Link auf jeder Seite einzubetten. Im Vergleich zu Webanwendungen sind Erweiterungen Website- und Webanwendungs-übergreifend. Erweiterungen sind gewöhnlich über alle Websites hinweg wirksam (obwohl manche Site-spezifisch sind). Webanwendungen lassen sich nicht auf diese Weise mit anderen Anwendungen kombinieren. Webanwendungen werden eher als Einzelanwendungen ausgeführt, wie jede reguläre Website. Webbrowserverlängerungen und Applikationen können zur Installation in und zur Ausführung durch einen auf einem Client-Computergerät laufenden Browser hemntergeladen werden.
-
In einer Implementierung kann das Client-Computergerät 102A laufen oder das Betriebssystem 108 veranlassen, die Applikation 110 oder den Webbrowser 112 auszuführen. In einigen Implementierungen kann dieser Webbrowser 112 eine Mehrzahl von Paneelen oder Tabs 114A, 114B, 114C umfassen. Der Webbrowser 112 kann ein Sichtbereich sein, normalerweise rechteckig mit irgendeiner Benutzerschnittstelle. In einer grafischen, im Clientgerät 102A benutzten Benutzerschnittstelle (GUI) kann der Webbrowser 112 ein zweidimensionales Objekt sein, das auf einer Ebene des als Desktop bekannten GUIs angeordnet ist. Der Webbrowser 112 kann andere grafische Objekte umfassen, die man auch als das „Chrome” des Webbrowsers bezeichnen kann, z. B. eine Menüzeile, Symbolleisten, Steuerungen und Symbole. Der Webbrowser kann auch einen Arbeitsbereich beinhalten, in dem ein Dokument, ein Bild, der Inhalt eines Ordners oder sonstige Hauptobjekte (z. B. die Online-Applikation 128) gezeigt werden kann. Der Arbeitsbereich kann fähig sein, mehr als ein größeres Objekt (z. B. in einer einzelnen Dokumentenschnittstelle) oder mehr als ein größeres Objekt in einer multiplen Dokumentenschnittstelle aufzunehmen. In einigen Applikationen, speziell in Webbrowsern, können mehrere Dokumente unter den verschiedenen Tabs 114A, 114B, 114C gezeigt werden. Diese Tabs 114A, 114B, 114C werden gewöhnlich einzeln gezeigt und sind über eine Tableiste wählbar, die häufig über dem Inhalt eines einzelnen Fensters liegt. Das heißt, dass ein gewählter Tab 114A „nach vorne blickt” und dem Benutzer im Webbrowser 112 Informationen oder Inhalte zeigt, während der Inhalt der anderen Tabs 114B, 114C „verborgen” bleint. Die Tabs 114A, 114B und 114C können unter separaten Vorgängen laufen, jeder mit seinem eigenen Speicher.
-
Die Client-Computergeräte 102A, 102B, 102C können Online-Inhalt von einen oder mehreren Servercomputergeräten 130, 150, 170 empfangen, die über ein Netzwerk 190 an das Clientgerät 102 angeschlossen werden können. In einigen Implementierungen kann der empfangene Online-Inhalt im Webbrowser 112 verarbeitet und dargestellt werden (z. B. auf einem Tab 114 des Webbrowsers 112). Zum Beispiel kann der Webbrowser 112 dem Benutzer die Benutzerschnittstelle eines Marktes für digitale Waren zeigen, ähnlich der Benutzerschnittstelle des hier beschriebenen Marktes.
-
Das Client-Computergerät 102A kann mit einem digitalen Warenmarkt-Server 150 kommunizieren, der den Client-Computergeräten 102A, 102B, 102C einen Markt für digitale Waren bietet. Der Markt-Server 150 kann einen oder mehrere Prozessoren 152 und eine oder mehrere Speichereinheiten 154 umfassen. Der Markt-Server 150 kann ein Betriebssystem und verschiedenen Applikationen und Dienstleistungen ausführen, die den Client-Computergeräten Funktionalität geben. Zum Beispiel kann in einer Implementierung der Markt-Server 150 eine Speicheranlage für eine Datenbank von digitalen Waren 158 umfassen und die digitalen Waren können von der Speicheranlage an das Client-Computergerät angedient oder herunterladen werden. In einer anderen Implementierung können die digitalen Waren in einer fern vom Markt-Server gelegenen Speicheranlage gespeichert und von dort an die Client-Computergeräte gesandt werden. Zum Beispiel könnten digitale Waren in den verschiedenen, von den Entwicklern der digitalen Waren betriebenen und kontrollierten Speicherablagen gespeichert und von dort an die Client-Computergeräte gesandt werden und die Speicheranlage für die digitalen Waren 158 des Markt-Servers 150 braucht nur Hinweise auf die einzelnen, von den Entwicklern betriebenen Speicheranlagen geben.
-
Informationen, welche eine auf einem Clientgerät laufende Applikation 110 an den Markt-Server 150 liefert (z. B. hinsichtlich der Art oder der Fähigkeiten des Computergeräts 102A usw.) können auf einer opt-in-Basis geliefert werden. Das heißt, dass diese Informationen vom Client-Computergerät 102A an den Server 150 nur geliefert werden, wenn der Benutzer des Clientgerätes die Übertragung dieser Informationen von dem Client auf den Server speziell autorisiert. Darüber hinaus kann die Information anonymisiert werden, bevor sie an den Markt-Server 150 gesandt wird.
-
Wie in 1 gezeigt wird, kann das System 100 auch einen Synchronisierungsserver 170 enthalten, der eine oder mehrere Prozessoren 172, eine oder mehrere Speichereinheiten 174, ein Betriebssystem 176 und eine Identifikatordatenbank 178 umfasst. Die Identifikatordatenbank 178 kann eindeutige Identifikatoren speichern, um die Synchronisierung zwischen den verschiedenen Benutzersessionen auf verschiedenen Client-Computergeräten (z. B. Geräte 102A, 102B, 102C) zu ermöglichen.
-
Zum Beispiel in einigen Implementierungen erlaubt es das Benutzerkonto einem Benutzer, die Systemdienstleistungen (z. B. Online-Applikationen) zu authentifizieren und die Genehmigung zu erhalten, auf sie zuzugreifen. Um sich bei einem Benutzerkonto anzumelden, kann sich ein Benutzer zum Beispiel selbst mit einem Passwort oder einer sonstigen Bescheinigung zum Zweck der Rechnungslegung, der Sicherheit oder des Ressourcenmanagements authentifizieren. Sobald der Benutzer angemeldet ist (z. B. bei einem Webbrowser, einem Computergerät usw.), kann ein Betriebssystem statt eines Benutzernamens einen Identifikator wie z. B. eine ganze Zahl verwenden, um sich auf den Benutzer zu beziehen. Zum Beispiel kann der Benutzername mit einem Benutzeridentifikator korreliert sein. Ein System (z. B. Server 170) kann das Eigentumsrecht an dem Benutzerkonto vergleichen und validieren und kann das Eigentumsrecht an diesem Benutzerkonto permanent mit gewissen Personen verbinden, indem es den validierten Kontoanmelde-Identifikatoren einen eindeutigen Identifikator zuweist (z. B. Benutzernamen und Passwörter, sichere Identifikatoren usw.). Das System kann bestätigen, dass gewisse Personen nur für gewisse Systeme und Applikationen Kontoanmelde-Identifikatoren haben, zum Beispiel entsprechend der Firmenpolitik einer Organisation, den Zugriffskontrollen der Firma und den verschiedenen Applikationsenforderungen.
-
In einigen Implementierungen, zum Beispiel wenn sich ein Benutzer bei einem Webbrowser 112 oder einem bestimmten Gerät 102A anmeldet, können alle Lesezeichen, Verlängerungen, Online-Applikationen, nativ laufenden Applikationen, Gesamterscheinungsbilder und sonstigen Browserpräferenzen des Benutzers gespeichert (z. B. in Speichereinheit 174) und mit einem Konto des Benutzers synchronisiert werden (z. B. mithilfe einer Identifikatorendatenbank 178). Der Benutzer kann dann, wenn er sich beim Webbrowser 112 auf anderen Computern und Geräten anmeldet (z. B. den Geräten 102B oder 102C), diese Einstellungen jederzeit laden. Änderungen der Browsereinstellungen können dann zum Beispiel sofort mit dem Konto synchronisiert und automatisch auf den anderen Computer wiedergegeben werden, bei denen sich der Benutzer angemeldet hat (und die Synchronisierung aktiviert hat).
-
Nachdem eine Online-Applikation oder eine nativ laufende Applikation 124 installiert ist, kann das Computergerät 102A lokal gewisse, die Applikation betreffende Daten speichern. Ein Server (z. B. der Synchronisierungsserver 170) kann sicherstellen, dass lokale Daten vom Computergerät 102A mit allen Geräten des Benutzers oder mit allen Geräten, die verwendet werden, um den Benutzer bei einem Benutzerkonto anzumelden, synchronisiert werden. Außerdem werden die Passwörter traditionsgemäß lokal gespeichert, können aber mithilfe des Servers mit allen Geräten synchronisiert werden. Des Weiteren kann der Server über verschiedene Geräte hinweg alle mit den Online-Applikationen und den Browserverlängerungen verbundenen, installierten nativ laufenden Applikationen, Online-Applikationen, Browserverlängerungen, Browserlesezeichen, Einstellungen, Profile, Browsergeschichte, Gesamterscheinungsbilder, Plug-ins, lokale Genehmigungen, Modusindikatoren und Daten für einen Benutzer synchronisieren. Wenn zum Beispiel ein Benutzer des Computergeräts 102A vom Computergerät 102C aus auf ein Benutzerkonto zugreift (zum Beispiel, über einen Webbrowser), kann der Server 150 die mit den Online-Applikationen und Browserverlängerungen verbundenen Einstellungen und Daten (zum Beispiel, die der Benutzer zur Synchronisation gewählt hat) vom Benutzerkonto auf das Computergerät 102C kopieren. Des Weiteren kann der Server fähig sein, gerät-empfindlich zu synchronisieren. Zum Beispiel können bestimmte Versionen von Online-Applikationen mit intensiven Grafiken für einen Desktop mit einem Hardware-Beschleuniger und einem großen Bildschirm geeignet sein, aber nicht für ein internetfähiges Telefon, Tablet oder Laptop. Der Server kann feststellen, dass eine Version der Online-Applikation für das internetfähige Telefon, Tablet oder Laptop eines Benutzers nicht so sehr geeignet ist und den Benutzer dementsprechend benachrichtigen (z. B. während eines Synchronisier- oder Anmeldevorgangs) oder eine Version oder eine Online-Applikation daran hindern, sich mit dem internetfähigen Telefon, Tablet oder Laptop des Benutzers zu synchronisieren.
-
Änderungen an den Einstellungen auf einem Computergerät können automatisch (z. B. über den Server 170) von anderen Computer kopiert werden (zum Beispiel, wenn der Benutzer die Synchronisierungseigenschaft aktiviert hat). Synchronisierte Daten können verschlüsselt werden, wenn sie zwischen den Computergeräten 102A, 102B, 102C und dem Server 150 reisen, damit die Information gesichert ist. Des Weiteren können Passwörter auf den Computergeräten 102A, 102B, 102C und dem Server 150 mithilfe eines Geheimschlüssels verschlüsselt werden.
-
In einigen Implementierungen haben nativ laufenden Applikationen, wie z. B. die in 1 gezeigte nativ laufende Applikation 124, protokoll-losen Netzwerkzugang (z. B. über eine API), um von Daten von einem Server, wie z. B. dem Server 130, hin und her zu schieben. Außerdem kann die nativ laufende Applikation 124 in einigen Implementierungen über allen Sessionen eines Benutzers hinweg synchronisiert werden, zum Beispiel mithilfe des Synchronisierungsservers 170. Wie oben erwähnt kann zum Beispiel eine nativ laufende Applikation 124 mithilfe der Laufzeit 120 auf eine Identitätsdienstleistung zugreifen (z. B. mithilfe einer API), sodass, wenn sich in Benutzer bei einem System anmeldet, die nativ laufende Applikation 124 auf die Identität eines angemeldeten Benutzers zum Beispiel über einen eindeutigen Identifikator zugreifen kann (wenn die Applikation die Erlaubnis des Benutzers hat).
-
2 ist ein Beispiel eines Blockdiagramms eines multi-prozess Vorgangs einer Laufzeitkonfiguration. Wie oben besprochen kann jede nativ laufende Applikation mithilfe der Laufzeit 120 einen separaten Vorgang benutzen, um das Gesamtsystem vor Bugstörungen in einer der nativ laufenden Applikationen zu schützen. Der Zugriff vom nativ laufende Applikationsvorgang auf die sonstigen nativ laufenden Applikationsvorgänge und auf das übrige System kann eingeschränkt werden. Auf diese Art wird ein auf einer Applikation laufende Vorgang isoliert und getrennt von den sonstigen auf anderen Applikationen laufenden Vorgängen. Ein Webbrowser (wie z. B. der Webbrowser 112) kann mithilfe der Laufzeit 120 und in seinem eigenen Vorgang ausgeführt werden.
-
Wie in 2 gezeigt wird, kann die Laufzeit 120 die separaten Vorgänge 202, 204 und 206 ausführen, die jeder Bildschirmbenutzer für die separat nativ laufenden Applikationen 212, 214 bzw. 216 verwendet. Wie oben besprochen sind die nativ laufenden Applikationen 212, 214 und 216 mit Online-Technologien kodiert (z. B. HTML, JAVASCRIPT usw.) und benötigen keinen Webbrowser, um zu laufen. Die nativ laufenden Applikationen 212, 214 und 216 können separate Vorgänge ausführen, wobei jede einen separaten Lese-Schreibzugriff auf zumindest einen Teil der Speichereinheit 106, wie z. B. Teile der Speichereinheit 222, 224 bzw. 226 haben kann. In einigen Implementierungen können die nativ laufenden Applikationen 212, 214 und 216 separate Vorgänge ausführen, wobei jede ihre eigene Speichereinheit (z. B. Speichereinheit 222, 224, 226) und ihre eigene Kopie der globalen Datenstrukturen hat. Eine nativ laufende Applikation (z. B. 212) kann beschäftigt sein, während alle anderen nativ laufenden Applikationen in Gebrauch sind. Wenn in einer der nativ laufenden Applikationen 212, 214 und 216 ein Fehler eintritt (z. B. bei einem Ausschreibungsvorgang), kann es sein, dass dieser die anderen Applikationen nicht beeinträchtigt oder die gesamte Laufzeit 120 zum Absturz bringt. Weiterhin kann jede der nativ laufenden Applikationen 212, 214 und 216 mithilfe der Laufzeit 120 abgeschottet werden, sodass bei ihrer Deinstallation keine Überreste der Applikationen auf dem Computergerät bleiben. Zum Beispiel werden kein ausführender Code und keine privaten Daten auf dem Computergerät gelassen. Das ist möglich, weil die Laufzeit 120 jede beliebige Deinstallation der nativ laufenden Applikationen 212, 214 und 216 kontrollieren kann und weil die Laufzeit 120 die nativ laufenden Applikationen 212, 214 und 216 isoliert, damit jede nativ laufende Applikation 212, 214, 216 ihre eigenen isolierten Datenspeicher hat (z. B. 222, 224, 226), sodass keine der nativ laufenden Applikationen einen anderen Datenspeicher beeinträchtigen kann. Des Weiteren kann keine der nativ laufenden Applikationen 212, 214, 216 auf persönliche Daten (wie Cookies) auf Websites zugreifen, auf die ein Benutzer in einem Webbrowser zugreift. Diese Art der Isolierung, die auch Sandboxing (Abschottung) genannt wird, nimmt die vom Betriebssystem gebotene Sicherheit in Anspruch, um eine Codeausführung zu erlauben, die nicht unentwegt Änderungen am Computer vornimmt oder auf Informationen zugreift, die vertraulich sind. Eine solche Isolierung und kontrollierte Deinstallation unterscheidet sich von nativen Applikationen, die sich nur selbst deinstallieren (und in einigen Fällen dazu nicht vollkommen in der Lage ist) und die im Allgemeinen auch auf jeden beliebigen Teil der Speichereinheit oder auf private Daten zugreifen kann. Im Gegensatz dazu kann die Laufzeit 120 die Deinstallation der nativ laufenden Applikation 124 kontrollieren.
-
Zur Illustration kann die nativ laufende Applikation 212 zum Beispiel ein Fotoeditor sein, der die bearbeiteten Fotos in einem isolierten Teil der Speichereinheit, nämlich im Speichereinheitsteil 222 speichert. Um jedoch auf die Fotos zum Editieren zuzugreifen, kann es sein, dass die nativ laufende Applikation 212 auf die vorher in einem anderen Teil der Speichereinheit 106 gespeicherten Fotos zugreifen muss. In einem solchen Fall kann eine API der nativ laufenden Applikation 212 Zugang zu allen lokalen Fotografien auf der Speichereinheit 106 verschaffen (z. B. nur JPEG- oder BITMAP-Dateien). Die API kann kontrollieren, wie dieser Zugang gehandhabt wird, weil die API über die Laufzeit 120 abläuft. In einem solchen Beispiel könnte die nativ laufende Applikation 212 die API nicht verwenden, um auf andere Kategorien von Dateien zuzugreifen oder nicht autorisierten Zugang zu andere Teilen der Speichereinheit 106 zu haben.
-
3 ist das Diagramm für ein Beispiel einer Benutzerschnittstelle, die für native Applikationen, nativ laufende Applikationen und Online-Applikationen benutzt werden kann. Die Benutzerschnittstelle 302 kann der Bildschirm eines Computergeräts (z. B. Desktop, Smartphone usw.) wie z. B. das Gerät 102A von 1 sein. Die Benutzerschnittstelle 302 kann verschiedene grafische Benutzerschnittstellenelemente beinhalten. Einige wahlweise Elemente der grafischen Benutzeroberfläche sind in 3 nicht dargestellt, wie z. B. eine Desktop-Symbolleiste, Desktopsymbole, ein Gesamterscheinungsbild, Applikationssymbole eines Smartphones usw.
-
Die Benutzerschnittstelle 302 kann eine Browser-Benutzerschnittstelle 304, eine nativ laufende APP-Benutzerschnittstelle 320 und eine native APP-Benutzerschnittstelle 340 umfassen. Die Browser-Benutzerschnittstelle 304 kann zum Beispiel verschiedene „Chrome”-Elemente des Browsers 306 umfassen, einschließlich der Umrandung des Webbrowsers 112, Fensterrahmen, Menüs, Symbolleisten und Schieberegler. Die Browser-Benutzerschnittstelle 304 kann von einem Webbrowser dargestellt werden, der eine Online-Applikation ausführt, welche die Online-Applikations-Benutzerschnittstelle 310 zeigt. Die Online-Applikation hat unter Umständen keinen automatischen Zugang zu den lokalen Ressourcen des Computergeräts 102A, wie z. B. zu einem Drucker, einer Kamera, einem Dateisystem, einem USB-Antrieb usw. und zwar wegen des Sicherheitsmodells des Internets. Dieser Mangel an automatischem Zugang kann eine Online-Applikation von der Perspektive des Benutzers sicherer machen. Demgegenüber kann eine native Applikation einen Lese-Schreibzugriff auf eine Speichereinheit des Computergeräts 102A haben, auf lokale Ressourcen zugreifen oder sogar Schadprogramme laufen. Nativ laufende Applikationen dagegen können die Sicherheit von Online-Applikationen haben, sie können aber auch mehr automatischen Zugang zu den lokalen Ressourcen haben, zum Beispiel über APIs, die der Applikation zusätzliche Funktionalitäten geben (wie Z. B. Zugang zu den lokalen Geräten, GPUs), während sie gleichzeitig die Sicherheitseigenschaften beibehalten (wie z. B. die Abschottung und Vorgangsisolierung).
-
Die nativ laufende Applikations-Benutzerschnittstelle 320, im Gegensatz zur Online-Applikations-Benutzerschnittstelle 310, hat keinen Browser-Chrome. Sowohl die Online-Applikations-Benutzerschnittstelle 310 als auch die nativ laufende Applikations-Benutzerschnittstelle 320 kann durch eine verpackte Gruppe (d. h. eine oder mehrere) Online-Technologie-Dateien 330A bzw. 330B implementiert werden. Die Online-Technologie-Dateien 330A und 330B können die ganze Logik enthalten, welche die Laufzeit 120 benötigt, um die Applikationen auszuführen. Die Online-Technologie-Dateien 330A und 330B können beispielsweise JAVASCRIPT, HTML, CSS oder andere Online-Technologie-Dateien beinhalten. Die Online-Technologie-Dateien 330A und 330B benötigen keine separate Kompilierung, um die Online-Applikation oder die nativ laufende Applikation auszuführen. Des Weiteren kann ein Entwickler die gleichen grundlegenden Online-Technologie-Dateien 330A und 330B verwenden, zum Beispiel mit verschiedenen verpackten Formaten, um sowohl eine Online-Applikation als auch eine nativ laufende Applikation zu implementieren. Zum Beispiel kann ein Entwickler eine Verbindung oder einen Pointer auf die Dateien auf einem Entwicklerserver für eine Online-Applikation liefern und eine verpackte Datei bereitstellen (z. B. in einem CRX-Format), die für einen Download für die gleiche Applikation verfügbar ist und sich wie eine nativ laufende Applikation verhält. Demgegenüber wird eine native Applikations-Benutzerschnittstelle 340 durch den ausführbaren Code 350 und nicht durch Online-Technologie-Dateien implementiert. Des Weiteren können native Applikationen nicht als Online-Applikationen in einem Webbrowser laufen.
-
4A ist ein Flussdiagramm eines Vorgangs für die systemübergreifende Installation von Online-Applikationen. Das in 4A gezeigte Flussdiagramm kann zumindest teilweise von einem Server durchgeführt werden (z. B. der in 1 gezeigte Markt-Server 150). Der Server kann eine Anfrage zur Installation einer nativ laufenden Applikation (410) erhalten. Vor der Installation einer speziellen nativ laufenden Applikation kann der Server die Anwesenheit einer Laufzeit (420) prüfen, zum Beispiel durch einen API-Anruf, um festzustellen, ob die Laufzeit auf dem Gerät installiert ist oder indem er eine Art Webbrowser erkennt, der auf den digitalen Markt-Server 150 zugreift. Falls die Laufzeit bereits installiert ist (420, ja), braucht sie nicht wieder auf die Maschine heruntergeladen werden und in manchen Implementierungen kann ein Server eine Anweisung an einen Browser senden, um die Laufzeit 120 einfach zu starten (nicht gezeigt). Wenn die Laufzeit nicht bereits installiert ist (420, nein), kann der Server die Laufzeit für die Installation (430) bereitstellen, zum Beispiel mit Genehmigung des Benutzers, der die Installation der nativ laufenden Applikation beantragt hat. In einer Implementierung kann die Installation durchgeführt werden, indem man dem Benutzer einen Meta-Installator gibt, der die Laufzeit 120 beinhaltet und sich selbst zu installieren weiß, nachdem der der Benutzer den Meta-Installator geöffnet hat. Der Server kann dem Benutzer auch einen oder mehrere Hinweise (wie z. B. durch eine eindeutige ID, einen Namen, eine Sprache, Marke oder durch sonstige Daten) für die gewünschte nativ laufende Applikation geben, welche die Laufzeit 120 dann herunterladen und installieren kann. In einigen Implementierungen kann der Meta-Installator auch regelmäßig die Laufzeit 120 aktualisieren, sobald er auf dem Gerät installiert ist oder die Laufzeit des Gerätes hochrüsten, sobald es eine neuere Version gibt. Der Server kann auch die nativ laufende Online-Applikation zur Installation auf dem Client-Computergerät (440) bereitstellen.
-
Der in 4A gezeigte Vorgang ist ein Beispiel einer Implementierung und kann Schritte löschen, neuordnen oder abändern lassen. Zum Beispiel können 430 und 440 kombiniert werden und der gesamte Vorgang kann ein Download mit einem Klick seitens des Benutzers sein und keinen weiteren Input des Benutzers benötigen. Als ein anderes Beispiel kann der Vorgang 400 auch die Feststellung beinhalten, dass ein Computergerät eine spezifische Eigenschaft hat (z. B. eine GPU oder eine Internet-Kamera) und die nativ laufenden Applikationen auf Basis der spezifischen Eigenschaft filtern. In einem anderen Beispiel kann der Server eine Art von Browser festlegen, der auf den digitalen Markt zugreift und bestimmen, dass, wenn der Webbrowser von einer bestimmten Art ist, die Laufzeit für dieses Computergerät bereits installiert ist.
-
4B ist ein Flussdiagramm eines Lebenszyklus einer nativ laufenden Applikation. Wenn die nativ laufende Applikation geöffnet wird (z. B. von einem Benutzer, der ein mit der Applikation verbundenes Desktopsymbol anklickt), ladet die nativ laufende Applikationslaufzeit eine Ereignisseite (450) vom Desktop des Benutzers. Eine Ereignisseite kann eine Webseite sein, welche die oberste Logik der Applikation mit keiner ihrer eigenen Benutzerschnittstellen enthält. Die Ereignisseite kann für die Schaffung der Benutzerschnittstellenfenster für alle anderen Applikationsseiten verantwortlich sein.
-
Wenn die Ereignisseite geladen wird, wird ein onLaunch()-Ereignis abgefeuert. Dieses Ereignis kann der Ereignisseite sagen, welche Fenster zu starten sind und deren Dimensionen.
-
Wenn die Ereignisseite Fenster öffnet (452, ja), dann sind ein oder mehrere Fenster für den Benutzer zum Ansehen und Zugreifen offen (454). Zum Beispiel kann eine Hauptbenutzerschnittstelle einer Fotobearbeitungsapplikation gezeigt werden. Die Ereignisseite oder die Laufzeit kann das Fenster (456) schließen, zum Beispiel, wenn der Benutzer ein Symbol anklickt, um die Applikation zu verlassen. Die Laufzeit ladet die Ereignisseite aus (458) und schließt die Applikation.
-
Wenn die Ereignisseite keine ausführende Javascript, unerledigte Rückfrage oder offenen Fenster hat (452, nein), ladet die Laufzeit die Ereignisseite (458) aus und schließt die Applikation. In manchen Implementierungen wird ein onSuspend()-Ereignis abgefeuert, bevor die Ereignisseite ausgeladen wird. Das gibt der Ereignisseite die Gelegenheit, einfache Säuberungsaufgaben auszuführen, bevor die Applikation geschlossen wird. Sobald dieses Ereignis abgefeuert ist, beginnt die Laufzeit, die Applikation zu schließen. Alle Ereignisse hören auf zu feuern und die Javascript-Ausführung wird eingestellt. Alle während der Behandlung dieses Ereignisses begonnenen asynchronen Operationen werden nicht garantiert abgeschlossen.
-
5 zeigt ein Beispiel eines allgemeinen Computergeräts 500 und eines allgemeinen mobilen Computergeräts 550, die mit den hier beschriebenen Techniken verwendet werden können. Das Computergerät 500 ist zur Darstellung verschiedener Formen von Digitalcomputern vorgesehen, wie Laptops, Desktops, Workstations, Personal Digital Assistants, Server, Blade-Server, Mainframes und andere geeignete Computer. Das Computergerät 550 soll verschiedene Formen mobiler Geräte repräsentieren, wie Personal Digital Assistants, Mobiltelefone, Smartphones und andere ähnliche Computergeräte. Die hier gezeigten Komponenten, ihre Verbindungen und Beziehungen und ihre Funktionen sollen nur exemplarisch sein und sollen Implementierungen der in diesem Dokument beschriebenen und/oder beanspruchten Erfindungen nicht einschränken.
-
Das Computergerät 500 beinhaltet einen Prozessor 502, Speicher 504, ein Speichergerät 506, eine Hochgeschwindigkeitsschnittstelle 508, die mit dem Speicher 504 und den Hochgeschwindigkeits-Erweiterungsanschlüssen 510 verbunden ist und eine langsame Schnittstelle 512, die mit einem langsamen Bus 514 und dem Speichergerät 506 verbunden ist. Jede der Komponenten 502, 504, 506, 508, 510 und 512 sind unter Verwendung verschiedener Busse miteinander verbunden und können auf einem gängigen Motherboard oder gegebenenfalls in anderer Weise angebracht sein. Der Prozessor 502 kann Anweisungen zur Ausführung innerhalb des Computergeräts 500 verarbeiten, die Anweisungen beinhalten, die in dem Speicher 504 oder auf der Speichervorrichtung 506 gespeichert sind, um grafische Informationen für ein GUI auf einer externen Eingabe-/Ausgabevorrichtung, wie Anzeige 516, die mit High-Speed-Schnittstelle 508 verbunden ist, anzuzeigen. In anderen Implementierungen können mehrere Prozessoren und/oder mehrere Busse verwendet sein, wie angemessen, zusammen mit mehreren Speichern und Speichertypen. Es können auch mehrere Computergeräte 500 verbunden sind, wobei jedes Gerät Teile der notwendigen Vorgänge bereitstellt (z. B. als eine Serverbank, eine Gruppe von Blade-Servern oder ein Mehrprozessorsystem).
-
Der Speicher 504 speichert Informationen im Computergerät 500. In einer Implementierung ist der Speicher 504 aus einer nichtflüchtigen Speichereinheit oder -einheiten ausgebildet. In anderen Implementierungen ist der Speicher 504 aus einer nichtflüchtigen Speichereinheit oder -einheiten ausgebildet. Der Speicher 504 kann auch eine andere Form von computerlesbarem Medium sein, zum Beispiel ein magnetischer oder optischer Datenträger.
-
Das Speichergerät 506 ist geeignet, Massenspeicherung für das Computergerät 500 bereitzustellen. In einer Implementierung kann das Speichergerät 506 ein computerlesbares Medium sein oder beinhalten, wie ein Floppy-Disk-Laufwerk, ein Festplattenlaufwerk, ein Optikplattenlaufwerk, ein Magnetbandlaufwerk, ein Flash-Speicher oder anderes ähnliches Solid-State-Speichergerät oder eine Reihe anderer Geräte, sein, einschließlich Geräten in einem Speichernetzwerk oder anderer Konfigurationen. Ein Computerprogrammprodukt kann konkret in einem Informationsträger ausgeführt sein. Das Computerprogrammprodukt kann auch Anweisungen enthalten, die, wenn sie ausgeführt werden, ein oder mehrere Verfahren ausführen, wie die oben beschriebenen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium wie der Speicher 504, die Speichervorrichtung 506 oder Speicher auf einem Prozessor 502.
-
Der Hochgeschwindigkeits-Controller 508 verwaltet bandbreitenintensive Vorgänge für das Computergerät 500, während der langsame Controller 512 Vorgänge mit niedrigerer Bandbreite verwaltet. Eine solche Zuordnung von Funktionen ist nur exemplarisch. In einer Implementierung ist die Hochgeschwindigkeitssteuerung 508 mit Speicher 504, Anzeige 516 (z. B. über einen Grafikprozessor oder -beschleuniger) und mit den Hochgeschwindigkeits-Erweiterungsanschlüssen 510, die verschiedene Erweiterungskarten (nicht gezeigt) akzeptieren können, verbunden. In der Implementierung ist die Niedergeschwindigkeitssteuerung 512 mit Speichervorrichtung 506 und Niedergeschwindigkeits-Erweiterungsanschlüssen 514 verbunden. Der langsame Erweiterungsanschluss, der verschiedene Kommunikationsanschlüsse (z. B. USB, BLUETOOTH, Ethernet, Funkethernet) beinhalten kann, kann an ein oder mehrere Eingabe-/Ausgabe-Geräte, wie eine Tastatur, ein Zeigegerät, einen Scanner oder ein Netzwerkgerät, wie einen Switch oder Router, z. B. durch einen Netzwerkadapter gekoppelt sein.
-
Das Computergerät 500 kann in einer Reihe verschiedener Formen implementiert werden, wie in der Figur gezeigt wird. So kann es beispielsweise als ein Standardserver 520 oder mehrfach in einer Gruppe solcher Server implementiert sein. Es kann außerdem als Teil eines Rack-Serversystems 524 implementiert sein. Zusätzlich kann es in einem Personal Computer wie einem Laptop-Computer 522 implementiert sein. Alternativ können Komponenten von Computergerät 500 mit anderen Komponenten in einem mobilen Gerät kombiniert sein (nicht dargestellt), z. B. Gerät 550. Jede solcher Vorrichtungen kann eine oder mehrere von Computergeräten 500, 550 enthalten und ein gesamtes System kann aus mehreren Computergeräten 500, 550, die miteinander kommunizieren, zusammengesetzt sein.
-
Das Computergerät 550 beinhaltet einen Prozessor 552, Speicher 564, ein Eingabe-/Ausgabegerät, wie eine Anzeige 554, eine Kommunikationsschnittstelle 566 und einen Sende-Empfänger 568, unter anderen Komponenten. Das Gerät 550 kann ebenfalls mit einer Speichervorrichtung z. B. einem Microdrive oder einem anderen Gerät ausgestattet werden, um zusätzlichen Speicher bereitzustellen. Jede der Komponenten 550, 552, 564, 554, 566 und 568 sind unter Verwendung verschiedener Busse miteinander verbunden und mehrere der Komponenten können auf einem gängigen Motherboard oder gegebenenfalls in anderer Weise angebracht sein.
-
Der Prozessor 552 kann Anweisungen im Computergerät 550 ausführen, zum Beispiel Anweisungen, die in Speicher 564 gespeichert sind. Der Prozessor kann als ein Chipsatz von Chips implementiert werden, die separate und mehrere analoge und digitale Prozessoren beinhalten. Der Prozessor kann beispielsweise zur Koordinierung der anderen Komponenten der Vorrichtung 550, wie etwa Steuerung von Benutzeroberflächen, Anwendungen, die von Vorrichtung 550 ausgeführt werden, und drahtlose Kommunikation durch Vorrichtung 550 bereitstellen.
-
Der Prozessor 552 kann mit einem Benutzer über Steuerschnittstelle 558 und Displayschnittstelle 556 kommunizieren, die mit einem Display 554 gekoppelt ist. Die Anzeige 554 kann zum Beispiel eine TFT LCD-(Thin-Film-Transistor Liquid Crystal Display) oder eine OLED-Anzeige (organische Leuchtdiode) oder eine andere angemessene Anzeigetechnologie sein. Die Anzeigeschnittstelle 556 kann angemessene Verschaltung zum Treiben der Anzeige 554 umfassen, um einem Benutzer grafische und andere Informationen zu präsentieren. Die Steuerschnittstelle 558 kann Befehle von einem Benutzer empfangen und sie zur Abgabe an den Prozessor 552 konvertieren. Zusätzlich kann eine externe Schnittstelle 562 in Verbindung mit dem Prozessor 552 bereitgestellt sein, um Nahbereichskommunikation von Vorrichtung 550 mit anderen Vorrichtungen zu ermöglichen. Die externe Schnittstelle 562 kann beispielsweise in manchen Implementierungen eine drahtgestützte Verbindung oder in anderen Implementierungen eine drahtlose Verbindung aufbauen, und es können auch mehrere Schnittstellen zur Anwendung kommen.
-
Der Speicher 564 speichert Informationen im Computergerät 550. Der Speicher 564 kann als ein computerlesbares Medium bzw. als eines von mehreren computerlesbaren Medien, als flüchtiger Speicher bzw. als flüchtige Speicher oder als ein nicht-flüchtiger Speicher bzw. als nicht-flüchtige Speicher implementiert werden. Erweiterungsspeicher 574 kann ebenfalls bereitgestellt und mit dem Gerät 550 über Erweiterungsschnittstelle 572 verbunden werden, die zum Beispiel eine SIMM(Single In Line Memory Module)-Kartenschnittstelle umfassen kann. Ein solcher Erweiterungsspeicher 574 kann zusätzlichen Speicherplatz für Vorrichtung 550 bereitstellen oder kann auch Anwendungen oder andere Informationen für Vorrichtung 550 speichern. Insbesondere kann Erweiterungsspeicher 574 Anweisungen zum Ausführen oder Ergänzen der oben beschriebenen Prozesse enthalten und er kann außerdem sichere Informationen enthalten. Demnach kann Erweiterungsspeicher 574 beispielsweise als ein Sicherheitsmodul für Vorrichtung 550 bereitgestellt sein und kann mit Anweisungen programmiert sein, die eine sichere Benutzung von Vorrichtung 550 ermöglichen. Zusätzlich dazu können über die SIMM-Cards sichere Anwendungen bereitgestellt werden, zusammen mit zusätzlichen Informationen, wie dem Ablegen von Identifizierungsinformationen auf der SIMM-Card auf eine Weise, die nicht gehackt werden kann.
-
Der Speicher kann beispielsweise Flash Speicher und/oder NVRAM-Speicher beinhalten, wie nachstehend erörtert. In einer Implementierung, ist ein Computerprogrammprodukt konkret in einem Informationsträger ausgeführt. Das Computerprogrammprodukt enthält Anweisungen, die, wenn sie ausgeführt werden, ein oder mehrere Verfahren ausführen, wie die oben beschriebenen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, wie der Speicher 564, die Speichererweiterung 574 oder der Prozessorspeicher 552, das beispielsweise über den Transceiver 568 oder die externe Schnittstelle 562 empfangen werden kann.
-
Das Gerät 550 kann drahtlos über die Verbindungsschnittstelle 566 kommunizieren, die digitale Signalverarbeitungsschaltkreise beinhalten kann, falls erforderlich. Die Verbindungsschnittstelle 566 kann Verbindungen mit verschiedenen Kommunikationstypen oder -protokollen aufbauen, darunter GSM-Sprachanrufe, SMS, EMS, oder MMS-Messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000 oder GPRS unter anderen. Solche Kommunikation kann beispielsweise durch Funkfrequenz-Sender-Empfänger 568 stattfinden. Zusätzlich kann eine Kurzstreckenkommunikation stattfinden, wie etwa unter Verwendung von Bluetooth, WiFi oder eines anderen solchen Sender-Empfängers (nicht gezeigt). Außerdem kann GPS(Global Positioning System)-Empfangermodul 570 zusätzliche mit der Navigation und dem Ort verbundene drahtlose Daten für Gerät 550 bereitstellen, die ggf. von Anwendungen verwendet werden können, die auf Gerät 550 ausgeführt werden.
-
Das Gerät 550 kann mithilfe des Audio-Codec 560 auch akustisch kommunizieren, das gesprochene Informationen von einem Benutzer empfangen und diese in nutzbare digitale Informationen konvertieren kann. Audio-Codec 560 kann ebenfalls akustische Töne für einen Benutzer erzeugen, zum Beispiel durch einen Lautsprecher zum Beispiel in einem Handgerät von Gerät 550. Diese Töne können Töne von Sprachtelefonanrufen beinhalten, können aufgezeichnete Töne (z. B. Sprachnachrichten, Musikdateien usw.) beinhalten und können auch Töne beinhalten, die von laufenden Anwendungen auf Gerät 550 erstellt wurden.
-
Das Computergerät 550 kann in einer Reihe verschiedener Formen implementiert werden, wie in der Figur gezeigt wird. Es kann zum Beispiel als Mobiltelefon 550 implementiert werden. Es kann außerdem als Teil eines Smartphones 552, Personal Digital Assistant oder eines anderen ähnlichen mobilen Geräts implementiert werden.
-
Verschiedene Implementierungen der hier beschriebenen Systeme und Techniken können in digitalen elektronischen Schaltkreisen, integrierten Schaltkreisen, speziell konzipierten ASICs (anwendungsorientierten integrierten Schaltkreisen), Computerhardware, Firmware, Software und/oder Kombinationen davon realisiert werden. Diese verschiedenen Implementierungen können eine Implementierung in einem oder mehreren Computerprogrammen beinhalten, die auf einem programmierbaren System ausführbar und/oder interpretierbar sind, das mindestens einen programmierbaren Prozessor beinhaltet, der ein spezieller Prozessor oder ein Prozessor für allgemeine Zwecke sein kann, und der zum Empfangen von Daten und Anweisungen von und zum Übertragen von Daten und Anweisungen an ein Speichersystem, mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung gekoppelt ist.
-
Diese Computerprogramme (auch bekannt als Programme, Software, Softwareanwendungen oder Code) beinhalten Maschinenanweisungen für einen programmierbaren Prozessor und können in einer höheren prozeduralen und/oder objektorientierter Programmiersprache und/oder in Assembler-/Maschinensprache implementiert werden. Wie hier verwendet, bezeichnen die Begriffe „maschinenlesbares Medium”, „computerlesbares Medium” ein beliebiges Computerprogrammprodukt, eine beliebige Vorrichtung und/oder ein beliebiges Gerät (z. B. Magnetplatten, optische Platten, Speicher, programmierbare Logikbausteine (PLDs)), die verwendet werden, um einem programmierbaren Prozessor Maschinenanweisungen und/oder Daten bereitzustellen, einschließlich eines maschinenlesbaren Mediums, das Maschinenanweisungen als ein maschinenlesbares Signal empfängt. Der Begriff „maschinenlesbares Signal” bezeichnet ein beliebiges Signal, das verwendet wird, um einem programmierbaren Prozessor Maschinenanweisungen und/oder Daten bereitzustellen.
-
Zur Interaktion mit einem Benutzer können die hier beschriebenen Systeme und Techniken auf einem Computer mit einem Anzeigegerät (z. B. ein CRT-[Kathodenstrahlröhre] oder ein LCD-[Flüssigkristallanzeige]Monitor) implementiert werden, um Informationen für den Benutzer anzuzeigen und eine Tastatur und ein Pointergerät (z. B. Maus oder Trackball), mit denen der Benutzer Eingaben in den Computer vornehmen kann. Andere Arten von Geräten können auch verwendet werden, um eine Interaktion mit einem Benutzer bereitzustellen; zum Beispiel kann eine dem Benutzer bereitgestellte Rückmeldung irgendeine Form von Sinnesrückmeldung sein (z. B. visuelle Rückmeldung, auditive Rückmeldung oder Tastrückmeldung); und eine Eingabe vom Benutzer kann in einer beliebigen Form empfangen werden, einschließlich akustischer, Sprach- oder Tasteingaben.
-
Die hierin beschriebenen Systeme und Techniken können in einem Computersystem implementiert werden, das eine Back-End-Komponente beinhaltet (z. B. als Datenserver) oder das eine Middleware-Komponente beinhaltet (z. B. einen Anwendungsserver) oder das eine Front-End-Komponente beinhaltet (z. B. ein Client-Computer mit einer grafischen Benutzeroberfläche oder einem Webbrowser, über welche ein Benutzer mit einer Implementierung der hier beschriebenen Systeme und Techniken interagieren kann) oder eine Kombination derartiger Back-End-, Middleware- und Front-End-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium von digitaler Datenkommunikation (z. B. ein Kommunikationsnetzwerk) miteinander verbunden sein. Beispiele von Kommunikationsnetzwerken beinhalten ein lokales Netzwerk („LAN”), ein Fernnetz („WAN”) und das Internet.
-
Das Computersystem kann Clients und Server beinhalten. Ein Client und Server befinden sich im Allgemeinen ortsfern voneinander und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und die eine Client-Server-Beziehung zueinander haben.
-
Einige Implementierungen sind beschrieben worden. Trotzdem versteht sich, dass verschiedene Modifikationen durchgeführt werden können, ohne vom Geist und Umfang der Erfindung abzuweichen.
-
Außerdem erfordern die in den Figuren dargestellten logischen Abläufe nicht die bestimmte dargestellte Reihenfolge oder sequenzielle Reihenfolge, um wünschenswerte Ergebnisse zu erzielen. Darüber hinaus können andere Schritte vorgesehen oder Schritte aus den beschriebenen Abläufen eliminiert werden und andere Komponenten können zu den beschriebenen Systemen hinzugefügt werden oder von diesen entfernt werden. Dementsprechend liegen andere Ausführungsformen im Umfang der folgenden Ansprüche.