WebKit

A Wikipédiából, a szabad enciklopédiából
WebKit
Compass in a box.svg
Epiphany 2 27 webkit.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]

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]

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]

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]

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]

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]

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]

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]

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]

WebCore[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 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]

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]

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]

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]

  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]