WebKit - WebKit

WebKit
WebKit-Logo (2015).svg
Originalautor(en) KDE
Entwickler Apple Inc. , Adobe Systems , Sony , KDE , Igalia und andere
Erstveröffentlichung 4. November 1998 ; vor 22 Jahren (KHTML veröffentlicht) 7. Juni 2005 ; Vor 16 Jahren (WebKit-Quelle) ( 1998-11-04 )
 ( 2005-06-07 )
Vorschauversion
Nächtlich
Geschrieben in C++
Betriebssystem macOS , Linux , Microsoft Windows
Typ Browser-Engine
Lizenz LGPLv2.1 (Rendering-Engine, JavaScript-Engine), BSD 2-Clause (zusätzliche Beiträge von Apple)
Webseite webkit .org

WebKit ist eine von Apple entwickelte Browser-Engine, die hauptsächlich in seinem Safari -Webbrowser sowie in allen iOS -Webbrowsern verwendet wird. WebKit wird auch vom BlackBerry Browser , PlayStation- Konsolen ab der PS3, den mobilen Tizen -Betriebssystemen und einem Browser verwendet, der im Amazon Kindle E-Book- Reader enthalten ist. Die C++- Anwendungsprogrammierschnittstelle (API) von WebKit bietet eine Reihe von Klassen zum Anzeigen von Webinhalten in Windows und implementiert Browserfunktionen wie das Verfolgen von Links, wenn der Benutzer darauf klickt, das Verwalten einer Rückwärtsliste und das Verwalten eines Verlaufs der kürzlich besuchten Seiten.

Die HTML- und JavaScript-Engine von WebKit begann als Fork der KHTML- und KJS- Bibliotheken von KDE und wurde seitdem von KDE-Mitarbeitern, Apple , Google , Nokia , Bitstream , BlackBerry , Sony , Igalia und anderen weiterentwickelt. WebKit unterstützt macOS , Windows , Linux und verschiedene andere Unix-ähnliche Betriebssysteme . Am 3. April 2013 gab Google bekannt, dass es WebCore, eine Komponente von WebKit, in zukünftigen Versionen von Google Chrome und dem Webbrowser Opera unter dem Namen Blink verwendet hat .

WebKit ist unter der BSD 2-Clause- Lizenz verfügbar, mit Ausnahme der WebCore- und JavaScriptCore- Komponenten, die unter der GNU Lesser General Public License verfügbar sind . Seit dem 7. März 2013 ist WebKit eine Marke von Apple, die beim US-Patent- und Markenamt eingetragen ist.

Ursprünge

Der Code, aus dem WebKit werden sollte, begann 1998 als KDE HTML ( KHTML ) Layout Engine und KDE JavaScript ( KJS ) Engine. Das WebKit-Projekt wurde innerhalb von Apple von Don Melton am 25. Juni 2001 als ein Fork von KHTML und KJS gestartet . Melton erklärte in einer E-Mail an KDE-Entwickler, dass KHTML und KJS eine einfachere Entwicklung als andere verfügbare Technologien ermöglichen, da sie klein sind (weniger als 140.000 Zeilen Code ), sauber gestaltet und standardkonform sind. KHTML und KJS wurden portiert OS X mit Hilfe eines Adapters Bibliothek und WebCore und Javascript umbenannt. JavaScriptCore wurde im Juni 2002 in einer E-Mail an eine KDE- Mailingliste angekündigt , zusammen mit der ersten Veröffentlichung der Änderungen von Apple.

Laut Apple betrafen einige Änderungen OS X-spezifische Funktionen (z. B. Objective-C , KWQ, OS X-Aufrufe), die in KDEs KHTML fehlen, was andere Entwicklungstaktiken erforderte.

Gespaltene Entwicklung

Der Austausch von Code zwischen WebCore und KHTML wurde mit der Divergenz der Codebasis immer schwieriger, da beide Projekte unterschiedliche Ansätze beim Codieren und Code-Sharing verfolgten. An einem Punkt sagten KHTML-Entwickler, dass sie die Änderungen von Apple wahrscheinlich nicht akzeptieren würden, und behaupteten, die Beziehung zwischen den beiden Gruppen sei ein "bitterer Misserfolg". Apple hat seine Änderungen in großen Patches eingereicht, die sehr viele Änderungen mit unzureichender Dokumentation enthalten, oft im Zusammenhang mit zukünftigen Ergänzungen. Daher war es für die KDE- Entwickler schwierig, diese Patches wieder in KHTML zu integrieren. Außerdem hatte Apple verlangt, dass Entwickler Vertraulichkeitsvereinbarungen unterzeichnen, bevor sie sich den Quellcode von Apple ansehen, und selbst dann konnten sie nicht auf die Fehlerdatenbank von Apple zugreifen.

Während der publizierten „Scheidung“ -Periode, KDE - Entwickler Kurt Pfeifle ( pipitas ) einen Artikel veröffentlicht , behauptet KHTML - Entwickler geschaffen hatte zurückzuportieren viele (aber nicht alle) Safari Verbesserungen von WebCore auf KHTML, und sie immer die Verbesserungen geschätzt von Apple kommen und immer noch tun so. Der Artikel stellte auch fest, dass Apple begonnen hatte, KHTML-Entwickler zu kontaktieren, um zu diskutieren, wie die gegenseitigen Beziehungen und Möglichkeiten der zukünftigen Zusammenarbeit verbessert werden können. Tatsächlich konnte das KDE-Projekt einige dieser Änderungen integrieren, um die Rendering-Geschwindigkeit von KHTML zu verbessern und Funktionen hinzuzufügen, einschließlich der Einhaltung des Acid2- Rendering-Tests.

Nach der Geschichte des Erscheinens des Forks in den Nachrichten veröffentlichte Apple Änderungen des Quellcodes von WebKit-Fork in einem öffentlichen Revisionskontroll- Repository.

Das WebKit-Team hatte auch viele Apple-spezifische Änderungen in der ursprünglichen WebKit-Codebasis rückgängig gemacht und plattformspezifische Abstraktionsschichten implementiert, um die Übertragung des Kern-Rendering-Codes auf andere Plattformen erheblich zu vereinfachen.

Im Juli 2007 berichtete Ars Technica , dass das KDE-Team von KHTML auf WebKit umsteigen würde. Stattdessen wurde nach mehreren Jahren der Integration im August 2010 die Version 4.5.0 der KDE-Entwicklungsplattform mit Unterstützung für WebKit und KHTML veröffentlicht, und die Entwicklung von KHTML wird fortgesetzt.

Open-Sourcing

Am 7. Juni 2005 gab Safari-Entwickler Dave Hyatt in seinem Weblog bekannt, dass Apple WebKit Open Source (früher waren nur WebCore und JavaScriptCore Open Source) und den Zugriff auf den Revisionskontrollbaum und den Issue Tracker von WebKit eröffnet .

Mitte Dezember 2005 wurde die Unterstützung für Scalable Vector Graphics (SVG) in den Standard-Build integriert.

Die JavaScriptCore- und WebCore-Komponenten von WebKit sind unter der GNU Lesser General Public License verfügbar, während der Rest von WebKit unter der BSD 2-Clause-Lizenz verfügbar ist.

Weitere Entwicklung

Anfang 2007 begann das Entwicklungsteam mit der Implementierung von Cascading Style Sheets (CSS)-Erweiterungen, einschließlich Animationen , Übergängen und 2D- und 3D-Transformationen; solche Erweiterungen wurden 2009 als Arbeitsentwürfe an das World Wide Web Consortium (W3C) zur Standardisierung freigegeben .

Im November 2007 gab das Projekt bekannt, dass es Unterstützung für Medienfunktionen des HTML5- Entwurfs der Spezifikation hinzugefügt hat , wodurch eingebettetes Video nativ gerendert und skriptgesteuert in WebKit gerendert werden kann.

Am 2. Juni 2008 gab das WebKit-Projekt bekannt, dass es JavaScriptCore in "SquirrelFish", einen Bytecode- Interpreter, umgeschrieben hat . Das Projekt entwickelte sich in SquirrelFish Extreme (abgekürzt SFX), am 18. September angekündigt, 2008, die kompiliert JavaScript in nativen Maschinencode , wodurch die Notwendigkeit für einen Bytecode - Interpreter eliminiert und damit die Ausführung von JavaScript zu beschleunigen. Anfangs war die einzige unterstützte Prozessorarchitektur für SFX der x86 , aber Ende Januar 2009 wurde SFX für OS X auf x86-64 aktiviert, da es alle Tests auf dieser Plattform bestanden hat.

WebKit2

Am 8. April 2010 wurde ein Projekt namens WebKit2 angekündigt, um WebKit neu zu gestalten. Ihr Ziel war es, die Komponenten, die Web-Rendering bereitstellen, sauber von ihrer umgebenden Oberfläche oder Anwendungs-Shell zu abstrahieren, um eine Situation zu schaffen, in der "Web-Inhalte (JavaScript, HTML, Layout usw.) in einem von der Anwendungs-UI getrennten Prozess leben". Diese Abstraktion sollte die Wiederverwendung für WebKit2 einfacher machen als für WebKit. WebKit2 hatte "eine inkompatible API-Änderung gegenüber dem ursprünglichen WebKit", was seine Namensänderung motivierte.

Die WebKit2-Ziele wurden auf Linux, MacOS, Windows, GTK und MeeGo- Harmattan festgelegt. Safari für OS X ist mit Version 5.1 auf die neue API umgestiegen. Safari für iOS ist seit iOS 8 auf WebKit2 umgestiegen.

Die ursprüngliche WebKit-API wurde in WebKitLegacy-API umbenannt. Die WebKit2-API wurde in einfache WebKit-API umbenannt.

Verwenden

WebKit als Rendering - Engine innerhalb verwendet Safari und wurde früher von benutzt Google ‚s Chrome Web - Browser unter Windows, MacOS und Android (vor Version 4.4 KitKat). Chrome verwendete nur WebCore und enthielt eine eigene JavaScript-Engine namens V8 und ein Multiprozesssystem. Chrome für iOS verwendet weiterhin WebKit, da Apple verlangt, dass Webbrowser auf dieser Plattform dies tun müssen. Andere Anwendungen auf macOS und iOS verwenden WebKit, wie Apples E-Mail-Client Mail , App Store und die 2008er Version von Microsofts Entourage Personal Information Manager , die beide WebKit zum Rendern von HTML-Inhalten verwenden.

Installierte Grundlage

Neue Webbrowser wurden um WebKit herum entwickelt, wie der S60- Browser auf Symbian -Mobiltelefonen, BlackBerry Browser (ver 6.0+), Midori , Chrome- Browser, der Android- Webbrowser vor Version 4.4 KitKat und der Browser, der in der PlayStation 3-Systemsoftware von verwendet wird Version 4.10. KDEs Rekonq -Webbrowser und Plasma Workspaces verwenden es auch als native Web-Rendering-Engine. WebKit wurde als Rendering-Engine in OmniWeb , iCab and Web (früher Epiphany genannt) und Sleipnir übernommen und ersetzt ihre ursprünglichen Rendering-Engines. GNOMEs Web unterstützte für einige Zeit sowohl Gecko als auch WebKit, aber das Team entschied, dass Geckos Veröffentlichungszyklus und zukünftige Entwicklungspläne es zu umständlich machen würden, es weiterhin zu unterstützen. webOS verwendet WebKit als Grundlage seiner Anwendungslaufzeit. Die neueste Schnittstelle Update für Ventil ‚s Dampf verwendet WebKit seine Schnittstelle zu machen und integrierten Browser. WebKit wird verwendet, um HTML zu rendern und JavaScript in der Adobe Integrated Runtime- Anwendungsplattform auszuführen . In Adobe Creative Suite CS5 wird WebKit verwendet, um einige Teile der Benutzeroberfläche zu rendern. Im ersten Halbjahr 2010 schätzte ein Analyst die kumulierte Zahl der mit einem WebKit-basierten Browser ausgelieferten Mobiltelefone auf 350 Millionen. Mitte April 2015 lag der Marktanteil von WebKit- Browsern bei 50,3 %.

Häfen

Eine Woche nachdem Hyatt das Open-Sourcing von WebKit angekündigt hatte, gab Nokia bekannt, dass es WebKit auf das Symbian- Betriebssystem portiert hat und einen auf WebKit basierenden Browser für Mobiltelefone mit S60 entwickelt. Der Webbrowser für S60 wurde auf Nokia, Samsung, LG und anderen Symbian S60-Mobiltelefonen verwendet. Apple hat WebKit auch auf iOS portiert, damit es auf dem iPhone , iPod Touch und iPad läuft, wo es zum Rendern von Inhalten im Webbrowser und in der E-Mail-Software des Geräts verwendet wird. Die Android -Mobiltelefonplattform verwendet WebKit (und spätere Versionen dessen Blink-Fork ) als Grundlage ihres Webbrowsers und Palm Pre , angekündigt im Januar 2009, verfügt über eine auf WebKit basierende Schnittstelle. Der Amazon Kindle 3 enthält einen experimentellen WebKit-basierten Browser.


Im Juni 2007 gab Apple bekannt, dass WebKit als Teil von Safari auf Microsoft Windows portiert wurde . Obwohl Safari für Windows vom Unternehmen stillschweigend eingestellt wurde, werden die Portierungen von WebKit auf das Betriebssystem von Microsoft weiterhin aktiv gepflegt. Der Windows-Port verwendet Apples proprietäre Bibliotheken, um zu funktionieren, und wird für iCloud und iTunes für Windows verwendet, während der "WinCairo"-Port ein vollständig Open-Source- und verteilbarer Port ist.

GNOME Web ist ein wichtiger Webbrowser unter Linux, der WebKitGTK verwendet

WebKit wurde auch auf mehrere Toolkits portiert, die mehrere Plattformen unterstützen, wie das GTK- Toolkit für Linux unter dem Namen WebKitGTK, das von Eolie, GNOME Web , Adobe Integrated Runtime , Enlightenment Foundation Libraries (EFL) und dem Clutter- Toolkit verwendet wird. Qt Software hat in der Qt 4.4-Version einen WebKit-Port als Modul namens QtWebKit enthalten (seitdem durch Qt WebEngine ersetzt , die stattdessen Blink verwendet). Der Iris-Browser von Qt verwendet ebenfalls WebKit. Der Port der Enlightenment Foundation Libraries (EFL) – EWebKit – wurde (von Samsung und ProFusion) entwickelt, der sich auf eingebettete und mobile Systeme konzentriert, für den Einsatz als eigenständiger Browser, Widgets-Gadgets, Rich-Text-Viewer und Composer. Der Clutter-Port wird von Collabora entwickelt und von der Robert Bosch GmbH gesponsert .

Es gab auch ein mit WebKit synchronisiertes Projekt (gesponsert von Pleyo) namens Origyn Web Browser , das eine Meta-Portierung zu einer abstrakten Plattform mit dem Ziel bereitstellte, die Portierung auf eingebettete oder leichtgewichtige Systeme schneller und einfacher zu machen. Dieser Port wird für eingebettete Geräte wie Set-Top-Boxen , PMP verwendet und wurde in AmigaOS , AROS und MorphOS portiert . MorphOS Version 1.7 ist die erste Version von Origyn Web Browser (OWB), die HTML5- Media-Tags unterstützt.

Webplattform für Embedded

Web Platform for Embedded (WPE) ist ein WebKit-Port für eingebettete Anwendungen; es verbessert die Architektur weiter, indem es die grundlegenden Rendering-Funktionsblöcke in eine Allzweck-Routinenbibliothek (libwpe), Plattform-Backends und die Engine selbst (genannt WPE WebKit) aufteilt. Der GTK-Port kann, wenn auch in sich abgeschlossen, so erstellt werden, dass er diese Basisbibliotheken anstelle seiner internen Plattformunterstützungsimplementierung verwendet. Der WPE-Port wird derzeit von Igalia gepflegt.

Forking von Google

Am 3. April 2013 kündigte Google an, einen Fork der WebCore-Komponente von WebKit mit dem Namen Blink zu produzieren . Die Entwickler von Chrome entschieden sich für den Fork, um mehr Freiheit bei der Implementierung der WebCore-Funktionen im Browser zu ermöglichen, ohne Konflikte im Upstream zu verursachen, und um die Codebasis zu vereinfachen, indem von Chrome ungenutzter Code für WebCore-Komponenten entfernt wird. Im Zusammenhang mit der Ankündigung von Opera Software Anfang des Jahres, mit Hilfe der Chromium- Codebase auf WebKit umzusteigen, wurde bestätigt, dass auch der Opera-Webbrowser auf Blink umstellen wird. Nach der Ankündigung begannen die WebKit-Entwickler mit Diskussionen über das Entfernen von Chrome-spezifischem Code aus der Engine, um die Codebasis zu optimieren. WebKit enthält keinen Chrome-spezifischen Code mehr (z. B. Buildsystem, V8-JavaScript-Engine-Hooks, Plattformcode usw.).

Komponenten

WebCore

WebCore ist eine Layout-, Rendering- und Document Object Model (DOM) -Bibliothek für HTML und Scalable Vector Graphics (SVG), die vom WebKit-Projekt entwickelt wurde. Der vollständige Quellcode ist unter der GNU Lesser General Public License (LGPL) lizenziert. Das WebKit-Framework umschließt WebCore und JavaScriptCore und bietet eine Objective-C- Anwendungsprogrammierschnittstelle für die C++- basierte WebCore-Rendering-Engine und die JavaScriptCore-Skript-Engine, sodass sie von Anwendungen, die auf der Cocoa-API basieren, leicht referenziert werden kann ; spätere Versionen enthalten auch eine plattformübergreifende C++-Plattformabstraktion, und verschiedene Ports bieten mehr APIs.

WebKit besteht die Acid2- und Acid3- Tests mit pixelgenauem Rendering und ohne Timing- oder Glätteprobleme auf Referenzhardware.

JavaScriptCore

JavaScriptCore ist ein Framework, das eine JavaScript-Engine für WebKit-Implementierungen bereitstellt und diese Art von Skripting in anderen Kontexten innerhalb von macOS bereitstellt. JavaScriptCore ist ursprünglich von der KDE - Bibliothek JavaScript Engine ( KJS ) (die Teil des KDE-Projekts ist) und der PCRE- Bibliothek für reguläre Ausdrücke abgeleitet . Seit der Abspaltung von KJS und PCRE wurde JavaScriptCore mit vielen neuen Funktionen und einer stark verbesserten Leistung verbessert.

Am 2. Juni 2008 gab das WebKit-Projekt bekannt, dass es JavaScriptCore in "SquirrelFish", einen Bytecode- Interpreter, umgeschrieben hat . Das Projekt entwickelte sich zu SquirrelFish Extreme (abgekürzt SFX, vermarktet als Nitro), das am 18. September 2008 angekündigt wurde und die Ausführung von JavaScript weiter beschleunigt.

Ein optimierender Just-in-Time- Compiler (JIT) namens FTL wurde am 13. Mai 2014 angekündigt. Er verwendet LLVM , um optimierten Maschinencode zu generieren. "FTL" steht für "Fourth-Tier-LLVM" und inoffiziell für " faster than light" in Anspielung auf seine Geschwindigkeit. Ab dem 15. Februar 2016 wird das Backend von FTL JIT durch das „Bare Bones Backend“ (kurz B3) ersetzt.

Siehe auch

Verweise

Externe Links