WebKit

A Wikipédiából, a szabad enciklopédiából
WebKit
Webkit Logo.png

Fejlesztő Apple, Google, Yandex, Adobe és mások
Első kiadás 1998. november 4. (KHTML megjelent)
2005. június 7. (WebKit nyílt forráskódú lett)
Legfrissebb stabil kiadás r98925 (2011. november 1.) +/-
Legfrissebb fejlesztői kiadás ismeretlen +/-
Programozási nyelv C++
Operációs rendszer Platformfüggetlen[1]
Kategória Böngészőmotor
Licenc GNU LGPL 2.1 (JavaScriptCore és WebCore komponensek), BSD 2.0 (a maradék)
A WebKit weboldala

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 kezelése, az előző⇔következő oldalak listájának kezelése vagy az előzmények listájának kezelése.

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[2], ami a WebKit projekt forkja[3].

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

Története[szerkesztés | forrásszöveg szerkesztése]

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 project, az Apple, a Nokia, a Google, a Bitstream, a Torch Mobile és mások munkája nyomán.[5]

Eredete[szerkesztés | forrásszöveg szerkesztése]

A kód, amiből később a WebKit lett, 1998-ban kezdte meg életét a KDE project 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 'WebKit'-nek, 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[6], hogy ezek a motorok kicsinységük (<140 000 kódsor), tiszta dizájnjuk és szabványosságuk miatt könnyebb fejlesztést tesznek lehetővé, mint más hozzáfé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.[6] A JavaScriptCore-t a KDE levelezőlistára írt emailben jelentették be 2002 júniusában, az Apple változtatásainak első változatával[7] 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.[8] 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.[9]

Kettészakadt fejlesztés[szerkesztés | forrásszöveg szerkesztése]

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.[10] 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.[11] 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.[12]

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.[13] 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.[14]

A forrás megnyitása[szerkesztés | forrásszöveg szerkesztése]

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.[13] 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[15] é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.[16] 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 | forrásszöveg szerkesztése]

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 scriptekkel való irányítása.[17]

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.[18][19] 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.[20] 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.[21]

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;[22] ezeket a kiterjesztéseket munkatervezetként (working draft) elküldték a W3C-nek 2009-ben szabványosítás céljából.[23]

Webkit2[szerkesztés | forrásszöveg szerkesztése]

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 processzben 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 osztottprocessz-modellt, így más kliensek is használhatják. Jelenleg a WebKit2 Mac és Windows alá érhető el.[24]

Felhasználása[szerkesztés | forrásszöveg szerkesztése]

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[25], a Midori, a Shiira, a Google Chrome böngésző[26][27], 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, az iCab és az Epiphany böngészőknek.[28] 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.[29] 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 | forrásszöveg szerkesztése]

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,[30] továbbá az Android mobilplatform is a WebKitet használja böngészésre,[31] a 2009 januárjában bejelentett Palm Pre pedig a felhasználói felületét jeleníti meg a WebKittel.[32]

Komponensek[szerkesztés | forrásszöveg szerkesztése]

WebCore[szerkesztés | forrásszöveg szerkesztése]

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 script-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.[33]

JavaScriptCore[szerkesztés | forrásszöveg szerkesztése]

A JavaScriptCore keretrendszer a WebKit-implementációk (valamint a Mac OS X egyes területeinek) JavaScript-futtatómotorját adja.[7][34] 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.[35]

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.[18][19] 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.[20]

Drosera[szerkesztés | forrásszöveg szerkesztése]

A Drosera a WebKit éjszakánként leforduló változataihoz adott JavaScript-hibakereső (debugger) neve volt.[36][37] 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ó.[38]

SunSpider[szerkesztés | forrásszöveg szerkesztése]

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ó.[39] A teszt törekszik a kiegyensúlyozottságra és arra, hogy statisztikailag jól működjön.[40] Az Apple WebKit teamje 2007 decemberében jelentette meg.[41] A bejelentést jól fogadta a nagyközönség,[42] é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.[43]

Források[szerkesztés | forrásszöveg szerkesztése]

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

Külső hivatkozások[szerkesztés | forrásszöveg szerkesztése]