Browser-Engine WebKit2 führt ein geteiltes Prozessmodell ein

Im Fokus der neuen Generation der Browser-Engine stehen ein geteiltes Prozessmodell, bei dem die Webinhalte separat ablaufen, und eine nicht blockierende API. Die ursprünglich aus dem KDE-Projekt hervorgegangene Engine bildet unter anderem die Basis für Apples Safari und Google Chrome sowie die Widget-Engine von Symbian S60.

In Pocket speichern vorlesen Druckansicht 83 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Alexander Neumann

Entwickler bei Apple haben die Version 2 der Browser-Engine WebKit vorgestellt. Die ursprünglich aus dem KDE-Projekt hervorgegangene Engine bildet unter anderem die Basis für Apples Safari und Google Chrome sowie die Widget-Engine von Symbian S60. Das vor allem von Apple entwickelte WebKit2 setzt auf einem geteilten Prozessmodell auf, bei dem Webinhalte wie JavaScript, HTML und Layout separat ablaufen.

Der Vorteil liegt darin, dass nur ein Tab abstürzt und nicht der gesamte Browser, wenn ein Plug-in oder ein Bug im Renderer zu einem Fehler führt. Mit dem Unterschied, dass das Prozessmodell direkt im Framework zu finden ist, wodurch es von allen WebKit-Nutzern zu verwenden ist, lehnt sich das Modell weitgehend an dem des Google-Browsers Chrome an. Auch der Internet Explorer 8 und Mozillas Firefox mit dem Electrolysis-Projekt gehen in die Richtung.

Die Entwickler möchten mit WebKit2 eine stabile, in C geschriebene und nicht blockierende API zur Verfügung stellen. Das bedeutet, Entwickler können sich in API-Methoden mit unterschiedlichen Callbacks einklinken, um Benachrichtigungen von den WebKit-Views zu erhalten. Zu den Callback-Aufrufen gehören solche im Nachrichtenstil wie didFinishLoadForFrame. Weiterhin gibt es Client-Callbacks wie decidePolicyForNavigationAction, die einzubettender Software erlauben, über eine Aktion zu entscheiden und dann darüber die Seite über ein Listener-Objekt zu informieren. Eine dritte Methode sind Policy-Settings, und eine vierte, die sich noch in der Implementierungsphase befindet, ist Code-Injizierung, die direkt mit dem DOM (Document Object Model) interagieren kann. (ane)