WebKit
WebKit | |
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, az előző és következő oldalak listájának és 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]
Tartalomjegyzék
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.[5]
Eredete[szerkesztés]
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,[6] 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.[6] 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.[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 parancsfájlokkal 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 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.[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, iCab és 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 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.[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-csapata 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]
- ↑ WebKit. Trac.webkit.org. (Hozzáférés: 2010. december 27.)
- ↑ Blink: A rendering engine for the Chromium project. The Chromium Blog. (Hozzáférés: 2013. április 3.)
- ↑ „Google going its own way, forking WebKit rendering engine”, Ars Technica (Hozzáférés ideje: 2013. április 3.)
- ↑ Open Source - WebKit. Apple. (Hozzáférés: 2009. március 5.)
- ↑ Maciej Stachowiak: Companies and Organizations that have contributed to WebKit. WebKit Wiki, 2008. november 9. (Hozzáférés: 2008. november 17.)
- ↑ a b KDE KFM-Devel mailing list "(fwd) Greetings from the Safari team at Apple Computer", January 7, 2003.
- ↑ a b Stachowiak, Maciej (June 13, 2002), "JavaScriptCore, Apple's JavaScript framework based on KJS", kde-darwin mailing list
- ↑ 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.)
- ↑ 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.)
- ↑ 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.)
- ↑ Open-source divorce for Apple's Safari?
- ↑ 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.)
- ↑ 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.)
- ↑ Ars at WWDC: Interview with Lars Knoll, creator of KHTML
- ↑ Next Generation KDE Technologies Ported to WebCore
- ↑ Unrau, Troy: The unforking of KDE’s KHTML and WebKit. Ars Technica, 2007. július 23. (Hozzáférés: 2007. július 30.)
- ↑ HTML5 Media Support by Antti Koivisto, Surfin' Safari blog, November 12th, 2007
- ↑ a b Announcing SquirrelFish
- ↑ a b SquirrelFish project
- ↑ a b Introducing SquirrelFish Extreme
- ↑ https://trac.webkit.org/changeset/40439
- ↑ CSS Transforms
- ↑ CSS3 Animations
- ↑ https://lists.webkit.org/pipermail/webkit-dev/2010-April/012235.html
- ↑ Nokia S60 Webkit Browser. [2005. december 6-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. július 29.)
- ↑ Google Chrome, Google’s Browser Project
- ↑ Comic describing the Google Chrome Project
- ↑ Epiphany Mailing list - ANNOUNCEMENT: The Future of Epiphany
- ↑ A Brand New Steam
- ↑ Maciej Stachowiak: The Obligatory iPhone Post. Surfin' Safari weblog, 2007. január 10. (Hozzáférés: 2008. január 24.)
- ↑ Android Uses WebKit
- ↑ Palm Pre in-depth impressions, video, and huge hands-on gallery
- ↑ Maciej Stachowiak: Full Pass Of Acid3. Surfin' Safari - The WebKit Blog, 2008. szeptember 25. (Hozzáférés: 2008. szeptember 29.)
- ↑ The WebKit Open Source Project – JavaScript
- ↑ The Great Browser JavaScript Showdown, 2007. december 19.
- ↑ WebKit.org Drosera wiki article
- ↑ Introducing Drosera. Surfin’ Safari
- ↑ Commit removing Drosera
- ↑ 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 ideje: 2008. szeptember 6.)
- ↑ SunSpider JavaScript Benchmark. (Hozzáférés: 2008. szeptember 6.)
- ↑ Announcing SunSpider 0.9, 2007. december 18. (Hozzáférés: 2008. szeptember 6.)
- ↑ Atwood, Jeff: The Great Browser JavaScript Showdown, 2007. december 19. (Hozzáférés: 2008. szeptember 6.)
- ↑ 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.