WebKit

böngészőmotor

A WebKit egy böngészőmotor, tehát olyan komponens, ami lehetővé teszi a webböngésző számára a weboldalak megjelenítését. A WebKit motor olyan objektumosztályokat tartalmaz, amik webes tartalmat jelenítenek meg egy ablakban, és olyan alapvető böngészőfunkciókat valósítanak meg, mint pl. a hivatkozásokra való kattintás, az előző és következő oldalak listájának és az előzmények listájának kezelése.

WebKit

FejlesztőApple, Google, Yandex, Adobe és mások
Első kiadás1998. november 4. (KHTML megjelent)
2005. június 7. (WebKit nyílt forráskódú lett)
Legfrissebb stabil kiadás7617 (stabil verzió, 2023. november 1.)[1]
Programozási nyelvC++
Operációs rendszerPlatformfüggetlen[2]
KategóriaBöngészőmotor
LicencGNU LGPL 2.1 (JavaScriptCore és WebCore komponensek), BSD 2.0 (a maradék)
A WebKit weboldala

A WebKit eredetileg a Safari böngészőmotorjaként használt KHTML új fejlesztési ága (fork) volt; számos platformra átültették. A Google Chrome, a Chrome Frame és az Opera is ezt használja, bár 2013 áprilisában a Google bejelentette, hogy le fogja cserélni a Chrome jövőbeli változataiban az általuk fejlesztett új Blink motorra,[3] ami a WebKit projekt forkja.[4]

A Webkit WebCore és JavaScriptCore komponensei a LGPL alatt, a WebKit többi eleme BSD licenc alatt érhető el.[5]

Története

A WebKitet az Apple eredetileg a Konqueror böngésző KHTML szoftverkönyvtárából fejlesztette tovább a Mac OS X alatt futó Safari webböngészője számára. Azóta lényegesen továbbfejlődött, a KDE projekt, az Apple, a Nokia, a Google, a Bitstream, a Torch Mobile és mások munkája nyomán.[6]

Eredete

A kód, amiből később a WebKit lett, 1998-ban kezdte meg életét a KDE projekt böngészőmotorjaként; a HTML-motor neve KHTML, a JavaScript-motoré KDE’s JavaScript engine (KJS). A kódot és a köré épülő projektet 2002-ben nevezték el WebKitnek, amikor az Apple saját ágon vitte tovább a KHTML és a KJS fejlesztését. Az Apple fejlesztői kifejtették a KDE projektnek írott levelükben,[7] hogy ezek a motorok kicsinységük (kevesebb mint 140 ezer kódsor), tiszta dizájnjuk és szabványosságuk miatt könnyebb fejlesztést tesznek lehetővé, mint más elérhető technológiák. A KHTML-t és a KJS-t átültették Mac OS X alá egy adaptáló kódkönyvtár segítségével, és átnevezték őket WebCore-ra és JavaScriptCore-ra.[7] A JavaScriptCore-t a KDE levelezőlistára írt e-mailben jelentették be 2002 júniusában, az Apple változtatásainak első változatával.[8] A WebCore-t 2003 januárjában jelentette be az Apple elnök-vezérigazgatója, Steve Jobs a Macworld Expón, a Safari böngésző megjelentetésével egy időben. A JavaScriptCore-t először a Mac OS X 10.2 tartalmazta, az Apple Sherlock alkalmazásának privát keretrendszereként, míg a WebCore a Safari első bétájával együtt jelent meg. A Mac OS X 10.3 volt az Apple operációs rendszerének első főkiadása, ami tartalmazta a WebKitet, bár a 10.2-es alkiadás már tartalmazta.

A KHTML két ága közötti kódcsere azonban problémásnak bizonyult és a kódok divergáltak egymástól, mivel a projektek más kódolási megközelítést alkalmaztak.[9] Ennek egyik oka az volt, hogy az Apple egy évig külön fejlesztette a saját változatát, mielőtt a változtatásaikat publikálták.

Ennek ellenére a KDE projekt képes volt a KHTML sebességét és funkcionalitását növelni a változtatásokkal, így ment át az Acid2 teszten is. A Konqueror 3.5 ment át az Acid2 teszten, miután az Apple nyilvánossá tette a WebKit CVS-rendszerét és hibaadatbázisát.

Az Apple szerint egyes változtatásaik Mac OS X-specifikus funkciók (pl. Objective-C, KWQ, Mac OS X-hívások) miatt történtek, amik a KDE KHTML-jéből hiányoznak, és más fejlesztési taktikákat igényeltek.[10]

Kettészakadt fejlesztés

Egy ponton megtörtént, hogy a KHTML fejlesztői kijelentették, hogy valószínűleg nem fogadják be az Apple változtatásait, és a két csoport közötti kapcsolat „keserű csalódás” számukra.[11] Az Apple fejlesztői a változtatásokat nagy csomagokban küldték be, gyakran elégtelen dokumentációval, különösen jövőbeli új funkciók esetén. Így a KDE fejlesztői számára nehéz volt visszaintegrálni a fejlesztéseket a KHTML-be.[12] Ráadásul az Apple titoktartási nyilatkozat aláírását követelte meg azoktól, akik belenéztek az általuk írt forráskódba, és még ekkor sem tekinthettek be az Apple hibaadatbázisába.

A nyilvánosságot kapott „szakítási időszakban” Kurt Pfeifle (pipitas) KDE-fejlesztő cikket írt, melyben azt állította, hogy a KHTML-fejlesztőknek sikerült visszailleszteni sok (de nem az összes) Safari-továbbfejlesztést a WebCore-ból a KHTML-be, és mint korábban is, jelenleg is örülnek az Apple-től jövő fejlesztéseknek. A cikk megjegyezte azt is, hogy az Apple felvette a kapcsolatot néhány KHTML-fejlesztővel annak megbeszélése érdekében, hogy hogyan javíthatnának a köztük lévő viszonyon, és a jövőbeli együttműködés kereteit kidolgozzák.[13]

Azután, hogy a szakadás sajtónyilvánosságot kapott, az Apple megjelentette a KHTML általuk módosított fejlesztési ágának forráskódját egy CVS-tárban.[14] A nyilvános CVS-elérés óta az Apple és a KHTML-fejlesztők közötti együttműködés megnövekedett. Több KHTML-fejlesztő az Apple WebKit SVN-tárához is szerzett feltöltési és ellenőrzési jogokat.

A WebKit-fejlesztőcsapat azóta visszavont több Apple-specifikus változtatást a kódból, és helyettük platformspecifikus absztrakciós rétegeket kódoltak, hogy a lényegi, HTML-megjelenítő kód fejlesztéséhez bármilyen platformon könnyebb legyen hozzájárulni.[15]

A forrás megnyitása

2005. június 7-én Dave Hyatt Safari-fejlesztő blogján bejelentette, hogy az Apple nyílt forrásúvá teszi a WebKitet (korábban csak a WebCore és a JavaScriptCore volt nyílt forrású), és megnyitja a WebKit CVS-fáját és Bugzilla-hibaadatbázisát.[14] Ez a bejelentés az Apple 2005-ös Worldwide Developers Conference-én hangzott el az Apple szoftverfejlesztési alelnöke, Bertrand Serlet szájából.

2005 december közepén került be az SVG-támogatás a standard WebKitbe,[16] és 2006 elején a kódot a CVS verziókövető alkalmazásból Subversionbe helyezték át. 2007 júliusában az Ars Technica weboldal azt jelentette, hogy a KDE-csapat átáll KHTML-ről a WebKitre.[17] Ez ebben a formában nem valósult meg, bár pl. a Konqueror moduláris felépítése miatt több böngészőmotort használhat (WebKitPart).

A WebKit JavaScriptCore és WebCore komponensei a GNU Lesser General Public License alatt, míg a WebKit többi része BSD-licenc alatt hozzáférhető.

További fejlesztések

2007 novemberében a fejlesztők bejelentették, hogy befejezték a HTML5 multimédiás funkcióinak támogatását, így a WebKitben lehetővé vált a beágyazott videók natív megjelenítése és parancsfájlokkal való irányítása.[18]

2008. június 2-án jelentették be, hogy újraírták a JavaScriptCore-t SquirrelFish („mókushal”) néven, bájtkód-alapú értelmezőként.[19][20] A projekt a 2008. szeptember 18-án bejelentett SquirrelFish Extreme (rövidítve SFX) néven fejlődött tovább, ami a JavaScriptet natív gépi kódra fordítja, ezzel szükségtelenné téve a bájtkódértelmezőt, és felgyorsítva a JavaScript futtatását.[21] Eredetileg csak az x86-architektúrán támogatták az SFX-et, de 2009 januárjára elkészültek Mac OS X alatt az x86-64-támogatással is.[22]

2007 elején kezdték meg a fejlesztők implementálni a CSS-kiterjesztéseket, köztük a CSS-animációkat, a CSS-áttűnéseket (transitions), továbbá 2D- és 3D-transzformációkat;[23] ezeket a kiterjesztéseket munkatervezetként (working draft) elküldték a W3C-nek 2009-ben szabványosítás céljából.[24]

Webkit2

A Webkit2-t 2010. április 8-án jelentették be. A WebKit2-t a kezdetektől osztott folyamatosként tervezték, ahol a webes tartalmak (JavaScript, HTML, az elrendezés stb.) külön folyamatban futnak. Ez a modell hasonló a Google Chrome által használthoz, azzal a különbséggel, hogy itt a keretrendszerbe építették be az több folyamatos modellt, így más kliensek is használhatják. Jelenleg a WebKit2 Mac és Windows alá érhető el.[25]

Felhasználása

A WebKitet használja böngészőmotorként a Safari böngésző Windows, Mac OS X és az Apple iOS alatt. Más maces alkalmazásokban is jelen van, például az Apple levelezőkliense, a Mail és a 2008-as Microsoft Entourage személyes információkezelő (PIM, personal information manager) a WebKitet használják a HTML e-mailek megjelenítésére.

Az újabb, WebKit köré épült webböngészők közé tartozik a Symbian mobiltelefonok S60 böngészője,[26] a Midori, a Shiira, a Google Chrome böngésző,[27][28] az Uzbl, a Maxthon 3 és az Androidban lévő webböngésző. A WebKittel cserélték le az eredeti böngészőmotorját az OmniWeb, iCab és Epiphany böngészőknek.[29] Az Epiphany eredetileg a Geckót és a WebKitet is támogatta, de úgy döntöttek, hogy a Gecko fejlesztési üteme és a jövőbeli fejlesztési terveik miatt túl bonyolult lenne tovább támogatniuk. A Palm WebOS-e szintén WebKit-alapú. A Valve Corporation által fejlesztett Steam tartalomtovábbító és -kezelő rendszer legújabb felhasználói felületét és beépített böngészőjét is a WebKit rajzolja ki.[30] A WebKit jeleníti meg a HTML-t és futtatja a JavaScripteket az Adobe AIR alkalmazásplatformján. Az Adobe Creative Suite CS5-ben a WebKit jeleníti meg a felhasználói felület egyes részeit.

Más platformok

Egyetlen héttel azután, hogy Hyatt bejelentette a forrás megnyitását, a Nokia bejelentette, hogy átültette a WebKitet a Symbian operációs rendszerre, és WebKit-alapú böngészőt fejleszt az S60-at futtató mobiltelefonjaira. A „Web Browser for S60” nevű böngészőt a Nokián kívül a Samsung és az LG is használja Symbian S60-alapú mobiljaiban. Az Apple szintén átültette a WebKitet az iOS-re, hogy az iPhone-on és az iPod touchon futhasson, ahol az eszközök webböngészőjébe és levelezőszoftverébe integrálták,[31] továbbá az Android mobilplatform is a WebKitet használja böngészésre,[32] a 2009 januárjában bejelentett Palm Pre pedig a felhasználói felületét jeleníti meg a WebKittel.[33]

Komponensek

WebCore

A WebCore a WebKit projekt által kifejlesztett szoftverkönyvtár, ami a HTML és SVG elemek elrendezését, kirajzolását és a Document Object Model (DOM) kezelését végzi. A teljes forráskód LGPL licenc alatt van. A WebKit keretrendszer egybecsomagolja a WebCore-t és a JavaScriptCore-t, Objective-C nyelvű API-t biztosít a C++-alapú WebCore megjelenítőmotorhoz és a JavaScriptCore parancsfájl-futtatómotorhoz, megkönnyítve így a Cocoa API-ra épülő alkalmazásból a meghívását; a későbbi verziókba bekerült a keresztplatformos C++-platformabsztrakció is, és néhány más platformra átültetett változatába további API-k kerültek.

A WebKit teljesíti az Acid2 és Acid3 teszteket, pixelpontos megjelenítéssel és időzítési zavarok nélkül, időben egyenletesen, a referenciahardveren futtatva.[34]

JavaScriptCore

A JavaScriptCore keretrendszer a WebKit-implementációk (valamint a Mac OS X egyes területeinek) JavaScript-futtatómotorját adja.[8][35] A JavaScriptCore-t a KDE JavaScript engine (KJS) kódkönyvtárából és a PCRE reguláriskifejezés-kódkönyvtárból fejlesztették tovább. Miután a KJS és PCRE projektekből más ágon vitték tovább a fejlesztést, a JavaScriptCore-t számos új funkcióval gazdagították, sebességét nagyban megnövelték.[36]

2008. június 2-án a WebKit projekt bejelentette, hogy újraírták a JavaScriptCore-t SquirrelFish („mókushal”) néven, bájtkód-értelmezőként.[19][20] 2008. szeptember 18-án bejelentették, hogy a projektet SquirrelFish Extreme kódnéven (rövidítve SFX, végső név: Nitro) fejlesztették tovább. A Nitro már gépi kódra fordítja le a JavaScriptet, így szükségtelenné vált a bájtkód-értelmező, és tovább gyorsították a JavaScript futtatását.[21]

Drosera

A Drosera a WebKit éjszakánként leforduló változataihoz adott JavaScript-hibakereső (debugger) neve volt.[37][38] Nevét a Drosera növénynemzetségről kapta, ahova húsevő növények tartoznak. A Droserát később lecserélték, amikor a Web Inspectorba bekerült a hibakereső funkció.[39]

SunSpider

A SunSpider egy többelemű sebességteszt, ami a JavaScript futtatásának sebességét méri életszerű, a való világban előforduló feladatokkal, mint pl. titkosítás vagy szövegmanipuláció.[40] A teszt törekszik a kiegyensúlyozottságra és arra, hogy statisztikailag jól működjön.[41] Az Apple WebKit-csapata 2007 decemberében jelentette meg.[42] A bejelentést jól fogadta a nagyközönség,[43] és azóta más böngészők fejlesztői is hivatkozási alapnak használják a JavaScript-teljesítmény mérésekor.[44]

Jegyzetek

Fordítás

  • Ez a szócikk részben vagy egészben a WebKit című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

Külső hivatkozások