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 | 7617 (stabil verzió, 2023. november 1.)[1] |
Programozási nyelv | C++ |
Operációs rendszer | Platformfüggetlen[2] |
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,[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]
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,[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]
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.[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]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.[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]
Drosera
[szerkesztés]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
[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ó.[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
[szerkesztés]- ↑ Release 7617, 2023. november 1. (Hozzáférés: 2024. február 20.)
- ↑ WebKit. Trac.webkit.org. [2010. december 27-i dátummal az eredetiből archiválva]. (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: 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 Archiválva 2021. szeptember 4-i dátummal a Wayback Machine-ben by Antti Koivisto, Surfin' Safari blog, November 12th, 2007
- ↑ a b Announcing SquirrelFish. [2020. május 12-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. július 28.)
- ↑ a b SquirrelFish project
- ↑ a b Introducing SquirrelFish Extreme. [2022. április 26-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. július 28.)
- ↑ 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. [2010. július 21-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. július 29.)
- ↑ 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. [2013. augusztus 20-i dátummal az eredetiből archiválva]. (Hozzáférés: 2008. szeptember 29.)
- ↑ 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.)
- ↑ 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.)
- ↑ WebKit.org Drosera Archiválva 2008. május 16-i dátummal a Wayback Machine-ben wiki article
- ↑ Introducing Drosera. Surfin’ Safari. [2007. október 28-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. július 29.)
- ↑ Commit removing Drosera. [2012. június 30-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. július 29.)
- ↑ 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.)
- ↑ SunSpider JavaScript Benchmark. [2008. szeptember 6-i dátummal az eredetiből archiválva]. (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. [2013. június 6-i dátummal az eredetiből archiválva]. (Hozzáférés: 2008. szeptember 6.)
- ↑ 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.