WebKit

A Wikipédiából, a szabad enciklopédiából
A lap korábbi változatát látod, amilyen InternetArchiveBot (vitalap | szerkesztései) 2021. február 19., 06:18-kor történt szerkesztése után volt. Ez a változat jelentősen eltérhet az aktuális változattól. (0 forrás archiválása és 1 megjelölése halott linkként.) #IABot (v2.0.8)
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 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

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

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

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

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

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

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

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

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

WebCore

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

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

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

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

  1. Release 7617, 2023. november 1. (Hozzáférés: 2024. február 20.)
  2. WebKit. Trac.webkit.org. (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 by Antti Koivisto, Surfin' Safari blog, November 12th, 2007
  19. a b Announcing SquirrelFish
  20. a b SquirrelFish project
  21. a b Introducing SquirrelFish Extreme
  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[halott link]
  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. (Hozzáférés: 2008. szeptember 29.)
  35. The WebKit Open Source Project – JavaScript
  36. The Great Browser JavaScript Showdown, 2007. december 19.
  37. WebKit.org Drosera wiki article
  38. Introducing Drosera. Surfin’ Safari
  39. Commit removing Drosera
  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. (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. (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

  • 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