Erster Schritt zum Google OS? - JAXenter
Google Native Client: Nutzung der stillen Clientressourcen

Erster Schritt zum Google OS?

Markus Stäuble

Der Anspruch an Webanwendungen ist in den letzten Jahren stetig gestiegen und für Entwickler gilt es oft, den Balanceakt zwischen Funktionalität und Performance zu meistern. Für den Anwender ist es sehr bequem, wenn alles aus einer zentralen Anwendung, dem Browser, erledigt werden kann. Mit Google Chrome hat sich Google dem Thema Browser bereits gewidmet. Um nun noch einen weiteren Schritt zu machen, hat Google mit dem Native Client einen Ansatz veröffentlicht, um native Anwendungen nahezu plattformunabhängig im Browser ablaufen zu lassen. Braucht es das?

Um die Möglichkeiten von Webanwendungen nicht alleine auf HTML und JavaScript zu begrenzen, existieren unterschiedliche Möglichkeiten wie Adobe Flash, Silverlight und JavaFX. Google hat Anfang Dezember 2008 nun eine weitere Variante hinzugefügt, den Native Client. Im Gegensatz zu einer Lösung wie ActiveX von Microsoft ist die plattformunabhängige Ausführung von nativen Anwendungen das ambitionierte Ziel. Durch die Ausführung von nativen Anwendungen im Browser können damit die brachliegenden Ressourcen des lokalen Clients genutzt werden. Das ferne Ziel von Google ist, JavaScript im Browser zu minimieren und auch die Server zu entlasten. Als Beispiel wird in der Hintergrunddokumentation eine Photo-Sharing-Anwendung aufgeführt, mit der Möglichkeit Bilder zu bearbeiten. Die Berechnungen werden von der nativen Anwendung auf dem Client abgenommen und müssen so nicht mehr vom Server vorgenommen werden. Die Wartezeit für den Anwender wird hierdurch um ein Vielfaches vermindert und die Unterschiede zur Desktopanwendung verschwinden.

Funktionsweise des Native Client

Eine Native-Client-Anwendung setzt sich zusammen aus einzelnen vertrauenswürdigen (trusted) und nicht vertrauenswürdigen (untrusted) Native-Client-Modulen. Teile der Anwendung werden dabei automatisch als untrusted angesehen. Der Browser selbst, auch Teil des Native Client, ist hingegen vertrauenswürdig. Beim Aufruf einer Seite, die eine Native-Client-Anwendung enthält, wird mittels JavaScript die Anwendung durch Nutzung des Native Client Plug-in in einen Native-Client-Container geladen. Anzumerken ist, dass beim Laden kein Popup geöffnet wird, um Berechtigungen abzufragen, denn hierfür ist der Native Client zuständig. Genau an dieser Stelle ist die berechtigte Frage nach der Sicherheit zu stellen und wie diese durch den Native-Client-Container gewährleistet wird.

Komponenten einer Native-Client-Anwendung laufen in ihrem eigenen Adressraum. Die Kommunikation zwischen den Komponenten (Inter-Component Communication) erfolgt mit dem Native Client Datagram Service, dem IMC (Inter-Module Communications). Für die Kommunikation zwischen dem Browser und einem Native-Client-Modul (Abb. 1) stehen die Varianten SRPC (Simple RPC) und NPAPI (Netscape Plug-in Application Programming Interface) zur Verfügung, die beide auf IMC basieren. Für Aufgaben wie Speichermanagement und Threads steht einer Native-Client-Anwendung eine so genannte Service Runtime zur Verfügung. Innerhalb eines Prozesses sorgen so genannte Inner Sandboxes für die Abschottung gegen andere Komponenten. Einzelne Prozesse werden durch eine Outer Sandbox gegeneinander abgeschirmt. Kommunikation dazwischen ist nur mittels IMC möglich. Detailbeschreibungen können Sie dem Forschungsdokument entnehmen.

Abb. 1: Kommunikation zwischen Browser und Native Client
Installation des Native Client

Die aktuelle Version 0.1 (Releasenotes) vom 18. Dezember 2008 des Native Client ist auf den Betriebssystemen Linux, Windows und Mac OS X lauffähig. Für Windows werden die Browser Chrome, Safari, Opera und Firefox 3 unterstützt. Für Linux und Mac OS X wird derzeit nur Firefox 3 unterstützt. Für die Ausführung der mitgelieferten Beispiele und Installation des Browser-Plug-in benötigen Sie Python in der Version 2.4 oder höher. Zu betonen ist, dass der Native Client selbst kein Python benötigt. Die aktuelle Version des Native Client kann für die unterstützten Betriebssysteme bereits vorkompiliert von der Downloadseite heruntergeladen werden. Auch der Quelltext steht auf dieser Seite in einem Archiv zur Verfügung. Der direkte Zugriff auf das Source-Repository ist ebenfalls möglich. Die Erläuterungen dafür sind im Bereich Source der Projektseite vorhanden. Der erste Schritt nach dem Download der binären Version (Größe Mac OS X: ca. 79,4 MB, Windows: ca. 85,8 MB) ist, das Archiv in ein beliebiges Verzeichnis zu extrahieren. Nun kann bereits der erste Test ausgeführt werden. Wechseln Sie hierfür in das Verzeichnis nacl/googleclient/native_client/tests/earth innerhalb des Installationsverzeichnisses und starten die Testanwendung (Earth-Demo) über das Kommando python run.py. Nun sollte sich eine Anwendung mit einer drehenden Weltkugel öffnen (Abb. 2).

Abb. 2: Das Earth-Demo als Native Client über die Konsole gestartet

Um nun den Native Client aber auch im Browser zu sehen, muss dafür ein Plug-in installiert werden. Die Installationsanleitung empfiehlt als Browser Firefox 3. Um das Plug-in zu installieren, muss zunächst in das Verzeichnis nacl/googleclient/native_client innerhalb des Installationsverzeichnisses gewechselt werden. In diesem Verzeichnis ist das Kommando ./scons –prebuilt firefox_install auszuführen. Nach kurzer Zeit sollte das Plug-in für den Firefox installiert sein. Während der Installation sollten alle Instanzen des Browsers geschlossen sein. Für den Test öffnen Sie die mitgelieferte Datei index.html aus dem Verzeichnis nacl/googleclient/native_client/scons-out/nacl/staging innerhalb des Installationsverzeichnisses. Diese Seite bietet mehrere Beispiele an, dabei auch ein Mandelbrot-Viewer (Abb. 3).

Abb. 3: Mandelbrot als Native Client im Browser

Die Integration des Native Client erfolgt dabei unter dem MIME-Type application/x-nacl-srpc. In Listing 1 wird die Integration des Mandelbrot-Viewer dargestellt.

Listing 1
Quake im Browser

Welche Dinge bereits mit der jetzigen Version des Native Client möglich sind, wird in der Distribution die Grundlage zur Verfügung gestellt, um Quake als Native Client im Browser ablaufen zu lassen. Das Basisverzeichnis für diesen Test ist das Verzeichnis /nacl/googleclient/native_client/tests/quake innerhalb des Installationsverzeichnisses. Nachfolgende Schritte sind notwendig:

  1. Download der Quellen (sqlquake-1.0.9.tar.gz) von Quake aus. Die Quellen werden direkt im genannten Basisverzeichnis (/nacl/googleclient/native_client/tests/quake) extrahiert. Die Quellen müssen nach dem Extrahieren auf gleicher Ebene liegen wie die anderen Dateien (kein Unterverzeichnis).
  2. Download der Level-Daten (quakesw-1.0.6.tar.gz) von der gleichen Seite wie Quake und Extraktion in das genannte Basisverzeichnis. Die Level-Daten liegen danach in einem Unterverzeichnis id1.
  3. Ausführen des Kommandos patch -p1
  4. Übersetzen der Quellen mit dem Kommando make release nacl.

Nun kann Quake über die Seite quake.html im Browser gestartet werden (Abb. 4).

Abb. 4: Quake als Native Client im Browser
Quo vadis Native Client?

Bei der vorliegenden Version des Native Client handelt es sich um eine wirklich sehr frühe Version. Dies wird auch ausdrücklich von Google betont. Die dringlichste Aufgabe ist es, die so genannten Sandboxes des Native Client sicher zu machen. Denn mit der Ausführung von nativen Anwendungen aus dem Browser heraus entstehen potenzielle Sicherheitsprobleme. Hier muss nachhaltig bewiesen werden, dass diese durch die doppelten Sandboxes ausgeräumt werden können. Beim Native Client handelt es sich nicht um eine Technologie, die schnell auf den Markt kommen wird, aber durch die frühe Veröffentlichung hofft Google auf Hilfe und Feedback von der Community. Nach dem eigenen Browser steht nun auch der Ansatz für eine Laufzeitumgebung parat.

Als Fazit kann festgehalten werden, dass es sich hier um eine spannende Technologie handelt. Wann und ob es zur Marktreife kommt, ist noch nicht abzusehen. Oder ist es nur der Vorbote zu einem Google OS?

Markus Stäuble ist CTO (Head of Technology) bei namics (deutschland) GmbH, einem führenden IT- und Webdienstleister. Darüber hinaus ist er freier Autor von Fachartikeln.

Geschrieben von
Markus Stäuble
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.