WebKit

böngészőmotor
Ez a közzétett változat, ellenőrizve: 2024. július 19.

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

szerkesztés

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]

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

szerkeszté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

szerkesztés

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

szerkesztés

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]

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

szerkesztés

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

szerkesztés

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

szerkesztés

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

szerkesztés

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]

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]

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]

  1. Release 7617, 2023. november 1. (Hozzáférés: 2024. február 20.)
  2. WebKit. Trac.webkit.org. [2010. december 27-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. december 27.)
  3. Blink: A rendering engine for the Chromium project. The Chromium Blog. (Hozzáférés: 2013. április 3.)
  4. Google going its own way, forking WebKit rendering engine”, Ars Technica (Hozzáférés: 2013. április 3.) 
  5. Open Source - WebKit. Apple. (Hozzáférés: 2009. március 5.)
  6. Maciej Stachowiak: Companies and Organizations that have contributed to WebKit. WebKit Wiki, 2008. november 9. (Hozzáférés: 2008. november 17.)
  7. a b KDE KFM-Devel mailing list "(fwd) Greetings from the Safari team at Apple Computer", January 7, 2003.
  8. a b Stachowiak, Maciej (June 13, 2002), "JavaScriptCore, Apple's JavaScript framework based on KJS", kde-darwin mailing list
  9. So, when will KHTML merge all the WebCore changes?. kdedevelopers.org. [2010. május 29-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. február 20.)
  10. Safari and KHTML again. kdedevelopers.org, 2005. április 30. [2006. március 3-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. február 20.)
  11. The bitter failure named "safari and khtml". [2010. szeptember 18-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. július 28.)
  12. Open-source divorce for Apple's Safari?
  13. WebCore - KHTML - Firefox: Know your facts!. [2009. február 10-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. július 28.)
  14. a b Daniel Molkentin: Apple Opens WebKit CVS and Bug Database. KDE News, 2005. június 7. (Hozzáférés: 2007. január 16.)
  15. Ars at WWDC: Interview with Lars Knoll, creator of KHTML
  16. Next Generation KDE Technologies Ported to WebCore
  17. Unrau, Troy: The unforking of KDE’s KHTML and WebKit. Ars Technica, 2007. július 23. (Hozzáférés: 2007. július 30.)
  18. HTML5 Media Support Archiválva 2021. szeptember 4-i dátummal a Wayback Machine-ben by Antti Koivisto, Surfin' Safari blog, November 12th, 2007
  19. a b Announcing SquirrelFish. [2020. május 12-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. július 28.)
  20. a b SquirrelFish project
  21. a b Introducing SquirrelFish Extreme. [2022. április 26-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. július 28.)
  22. https://trac.webkit.org/changeset/40439
  23. CSS Transforms
  24. CSS3 Animations
  25. https://lists.webkit.org/pipermail/webkit-dev/2010-April/012235.html
  26. Nokia S60 Webkit Browser. [2005. december 6-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. július 29.)
  27. Google Chrome, Google’s Browser Project
  28. Comic describing the Google Chrome Project
  29. Epiphany Mailing list - ANNOUNCEMENT: The Future of Epiphany
  30. A Brand New Steam
  31. Maciej Stachowiak: The Obligatory iPhone Post. Surfin' Safari weblog, 2007. január 10. (Hozzáférés: 2008. január 24.)
  32. Android Uses WebKit. [2010. július 21-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. július 29.)
  33. Palm Pre in-depth impressions, video, and huge hands-on gallery
  34. Maciej Stachowiak: Full Pass Of Acid3. Surfin' Safari - The WebKit Blog, 2008. szeptember 25. [2013. augusztus 20-i dátummal az eredetiből archiválva]. (Hozzáférés: 2008. szeptember 29.)
  35. The WebKit Open Source Project – JavaScript. [2015. szeptember 1-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. július 29.)
  36. The Great Browser JavaScript Showdown, 2007. december 19. [2013. június 6-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. július 29.)
  37. WebKit.org Drosera Archiválva 2008. május 16-i dátummal a Wayback Machine-ben wiki article
  38. Introducing Drosera. Surfin’ Safari. [2007. október 28-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. július 29.)
  39. Commit removing Drosera. [2012. június 30-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. július 29.)
  40. Muchmore, Michael. „Review: Firefox 3 Stays Ahead of Browser Pack”, 2008. június 18.. [2008. július 5-i dátummal az eredetiből archiválva] (Hozzáférés: 2008. szeptember 6.) 
  41. SunSpider JavaScript Benchmark. [2008. szeptember 6-i dátummal az eredetiből archiválva]. (Hozzáférés: 2008. szeptember 6.)
  42. Announcing SunSpider 0.9, 2007. december 18. (Hozzáférés: 2008. szeptember 6.)
  43. Atwood, Jeff: The Great Browser JavaScript Showdown, 2007. december 19. [2013. június 6-i dátummal az eredetiből archiválva]. (Hozzáférés: 2008. szeptember 6.)
  44. Resig, John: JavaScript Performance Rundown, 2008. szeptember 3. (Hozzáférés: 2008. június 9.)

Fordítás

szerkeszté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

szerkesztés