本页使用了标题或全文手工转换

WebKit

维基百科,自由的百科全书
(重定向自AppleWebKit
跳到导航 跳到搜索
WebKit
WebKit logo (2015).svg
原作者 KDE[1][2]
開發者 蘋果公司AdobeGoogleKDEIgalia及其它開發者
初始版本 1998年11月4日,​20年前​(1998-11-04(KHTML釋出);2005年6月7日,​14年前​(2005-06-07(WebKit開源)
源代码库 編輯維基數據鏈接
编程语言 C++
操作系统 跨平台
类型 排版引擎
许可协议 GNU LGPL v2.1(某些JavaScriptCore與WebCore元件中的檔案)、BSD v2.0(大部分瀏覽器引擎)
网站 www.webkit.org

WebKit是一種用來讓网页浏览器繪製網頁排版引擎。它被用於Apple Safari。其分支Blink被用於基於Chromium的網頁瀏覽器,如:OperaGoogle Chrome

Webkit亦使用於Apple iOSBlackBerry Tablet OSTizenAmazon Kindle的預設瀏覽器。WebKit的C++应用程序接口提供了一系列的Class以在視窗上顯示網頁內容,並且實現了一些瀏覽器的特色,如使用者連結點擊、管理前後頁面列表及近期歷史頁面等等。

WebKit的HTML及JavaScript程式碼源自KDEKHTMLKJS函式庫的一個分支[3],現已由KDE、Apple、GoogleNokiaBitstreamBlackBerry及Igalia等獨立開發[4]OS XWindowsGNU/Linux以及其他类Unix系统作業系統,皆支援這個專案[5]。2013年4月3日,Google宣佈它建立了WebKit中WebCore元件的分支——Blink,Blink將用於新版Google ChromeOpera[6][7]

WebKit的WebCoreJavaScriptCore元件使用GNU宽通用公共许可证,其他元件則採用BSD许可证[8]

截至2013年3月7日,Webkit商标已被苹果公司美国专利及商标局注册为其商标。[9]

緣起[编辑]

WebKit的程式碼源自1998年所開發的KDE的HTML排版引擎KHTML及KDE的JavaScript引擎KJS的程式碼。Apple的Don Melton於2001年6月25日開始了WebKit這個專案[10],當時WebKit僅為KHTMLKJS复刻,Melton在電子郵件中向KDE開發者解釋[2]KHTMLKJS比起其他技術有著更容易開發、更輕巧(少於140000行程式碼)、更加乾淨的設計,以及更與標準相容的優勢,KHTML及KJS將會透過連接器函式庫(adapter library)的幫忙被移植到OS X,並重新命名為WebCore及JavaScriptCore[2]。JavaScriptCore在2002年6月,於KDE的郵件列表(mailing list)中首度發表,包含著蘋果電腦首次釋出的部分[11]。WebCore在2003年1月,首度發佈於Macworld Expo中由蘋果電腦CEO Steve Jobs發表的Safari瀏覽器。當WebCore首次使用在第一個Safari的測試版本的同時,JavaScriptCore首次並以私有framework的方式包進Mac OS X v10.2,蘋果電腦將其使用在Sherlock軟體。Mac OS X v10.3是第一個Apple發佈內建WebKit的作業系統,儘管它已經被內建在10.2內了。

Apple表示,有些牽涉到OSX的特定功能(例如:Objective-C、KWQ[12]OS X特定函式)將會在KDE的KHTML中缺席,這行為被稱為不同的發展策略[13]

開發分裂[编辑]

由於這兩個分支(KHTML及WebCore)有著不同的目的而進行開發,所以他們程式碼互相補丁(patch)的難度越來越高[14]。 KHTML的開發者認為,他們不喜歡接受蘋果電腦對於KHTML的改變,並宣稱兩個組織的關係有些不好(a bitter failure)[15],蘋果提交他們相當大的補丁,其中包含相當大數目的改變,但是卻缺少相關文件,並且經常包含著未來的擴充,然而這些補丁對於KDE的開發者而言,要整合回KHTML是相當困難的[16],此外,蘋果電腦要求開發者閱覽Apple的程式碼之前必須簽署保密條款(non-disclosure agreements),甚至還不能存取蘋果電腦的bug資料庫[來源請求]

在公佈離婚的期間,KDE開發者Kurt Pfeifle(pipitas)貼出了一篇文章,宣稱KHTML開發者已經設法從WebCore移植許多(但非全部)Safari所改進的項目回KHTML,而他們一直都希望這些改進是來自於蘋果電腦。這篇文章讓Apple開始聯絡KHTML的開發者,並討論有關增進彼起關係的方法及未來的合作模式[17],事實上KDE專案確實有能力合併一些項目,來改進KHTML的渲染速度以及加入一些新的功能特色,包含Acid2渲染測試的改進[18]

自从新闻播报了fork事件之后,Apple在CVS[19]发布了他們自己維護的WebKit版本,在他們发布代码後,Apple及KHTML開發者已經加深了合作關係,許多KHTML的開發者也成為了WebKit SVN代码库的審查(Reviewer)及提交者(Submitter)。

WebKit工作團隊同時也逆轉許多Webkit程式碼當中,專為蘋果特定的修正,並且實現了一個平台特定的抽象層,可使渲染的程式碼於其他平台可以更順利的運作[20]

在2007年7月,Ars Technica網站發佈一篇文章,指出KDE開發團隊將從KHTML轉移到WebKit[21],再經由多年的整合,KDE開發平台4.5於2010年8月釋出,它同時支援WebKit及KHTML,而KHTML的開發仍在繼續[22]

開源[编辑]

在2005年6月7日,Safari開發者戴夫·海厄特(Dave Hyatt)於他的blog宣布Apple將把Webkit開源(之前僅有WebCore及JavaScriptCore開源),並且開放了WebKit的CVS程式庫以及臭蟲資料庫工具[19]。這項消息由蘋果電腦軟體工程的高階副總(Senior Vice President)Bertrand Serlet於蘋果電腦2005年的Worldwide Developers Conference公開。

在2005年12月中,可縮放向量圖形的支援被加入了標準版本[23],在2006年1月初,這項程式碼從CVS轉移至Subversion

WebKit的JavaScriptCore及WebCore元件目前以GNU較寬鬆公共許可證方式授權,而其他的WebKit元件則是以BSD授權公開。

更進一步發展[编辑]

在2007年一開始,開發團隊開始實現层叠样式表(CSS)的擴充,包含動畫、轉換(transitions)以及2D和3D的轉場(transform)[24],這樣的擴充在2009年W3C的標準中被列入草案[25]

在2007年11月,這項專案宣布,他們已經完成了HTML5媒體特色的支援,允許頁面中以原生的方式嵌入影片,並且可以被script所控制[26]

在2008年6月2日,WebKit專案宣布他們重寫了JavaScriptCore,被稱為"SquirrelFish",它是一個字节码直譯器(Bytecode Interpreter)[27][28],這項專案驗後來變成SquirrelFish Extreme(SFX),它可將JavaScript編譯為机器语言而不再需要直譯器,這樣的做法加速了JavaScript的執行[29],這項專案於2008年9月18日發布。一開始,SFX僅支援x86架構,於2009年1月底,SFX於OSX支援了x86-64架構,並且在該平台通過了所有的測試[30]

WebKit2[编辑]

WebKit2發佈於2010年4月8日,WebKit2的目標是將元件抽象化,並提供更乾淨的網頁渲染,它會利用從周圍的界面或是應用程式的殻,建立一個環境使網頁的內容(JavaScript、HTML、排版等等)將會在另外一個进程(Process)運行,比起WebKit,這個抽象化的做法打算令WebKit2可重覆使用一個更簡單的程序。因為WebKit2對比起WebKit有一個不相容的API,所以導致他的名字被改變為WebKit2[31]

目前WebKit2僅開放於Mac、Windows及MeeGo-Harmattan[32][33]

使用[编辑]

Web browser usage on Wikimedia.png

作為渲染引擎使用的WebKit,被使用在SafariGoogle Chrome瀏覽器於WindowsOS XiOSAndroid平台(然而,Chrome僅僅使用WebCore,而JavaScript引擎及多工系統則自行開發)[34]。其他的在OS X底下的應用程式也使用WebKit,例如Apple的e-mail用戶端軟體Mail以及微軟的个人信息管理系统Microsoft Entourage 2008,皆使用WebKit來渲染HTML內容的e-mail訊息。

Opera软件公司於2013年初宣布,他們將停止他們自行開發的Presto排版引擎,由Webkit專案取代,在未來將會以Webkit來取代,並貢獻給Webkit專案[35]

內建平台[编辑]

新的網頁瀏覽器已經內建了WebKit,例如Symbian手機的S60瀏覽器[36]BlackBerry瀏覽器(ver 6.0+)、MidoriChrome瀏覽器[37][38]Android網頁瀏覽器、PlayStation_3_系统软件4.0以上所使用的瀏覽器[39]、KDE的Rekonq瀏覽器以及Plasma Workspaces都使用WebKit作為原生的網頁渲染引擎。WebKit已經被OmniWebiCab及Web(前面所說的Epiphany)採用,並取代原有的渲染引擎,Sleipnir於2012年開始在他們的瀏覽器開發WebKit,並於2012年5月17日進入第三個Alpha階段[40]。Epiphany同時支援Gecko及WebKit,但他們的團隊描述Gecko的發佈週期及未來的開發計劃將會令他們對於Gecko的支援太過笨重。HP的WebOS使用WebKit作為它應用程式執行時期的基礎[41]Valve CorporationSteam最新更新的界面,使用WebKit作為它界面的渲染以及內建的瀏覽器[42]。WebKit在Adobe_AIR中被使用在渲染HTML及執行JavaScript,在Adobe Creative Suite CS5,WebKit用來渲染部分元件的使用界面。

截至2010年上半年,分析估計內建WebKit瀏覽器的行動裝置已經達到3億5千萬[43],截至2012年2月 (2012-02),WebKit的市場份額已經達到36%,同等於Internet Explorer所使用的Trident/MSHTML引擎的市場份額[44],如果這個成長持續下去,使用WebKit的總和(Chrome、Safari以及智慧型手機/平板)於2012年底將會超過50%,而WebKit將會是市場的領導者[45]

移植[编辑]

在Hyatt發佈WebKit開源之後的那一周,Nokia宣布他們將移植WebKit到Symbian作業系統,並為S60開發一個基於WebKit的行動裝置瀏覽器,現在已經被命名為Web Browser for S60,它被使用在Nokia、Samsung、LG及其他使用Symbian S60的行動電話。Apple也已經移植WebKit到iOS並將其運行於iPhoneiPod TouchiPad,它被使用在這些裝置的網頁瀏覽器及電子郵件軟體。[46]Android行動電話平台也使用WebKit作為它網頁瀏覽器的基礎[47],而於2009年1月發佈的Palm Pre使用WebKit作為它的界面[48]Amazon Kindle 3包含著一個以WebKit打造實驗性質的瀏覽器[49]

在2007年6月,Apple宣布WebKit已經被移植到iOS,並作為Safari的一部分,還有一些正在進行中的項目,將WebKit移植到開源的作業系統Syllable[50]Haiku[51]以及AROS Research Operating System(AROS).[52]

WebKit也被移植到許多Toolkits使其支援多平台,例如GTK+ toolkit[53][54]Qt framework,[55]Adobe AIREnlightenment Foundation Libraries (EFL)以及Clutter toolkit[56]Qt SoftwareDigia所擁有)於Qt 4.4包含Qt port,Qt port的WebKit也可使用在Konqueror 4.1版本之後[21]。在Qt底下的Iris Browser也使用WebKit。The Enlightenment Foundation Libraries (EFL)的移植還在進行(經由Samsung及ProFUSION[57]),他們將專注在嵌入式及行動系統,並將其作為一個獨立運行的瀏覽器、Widgets/Gadgets、文件閱讀及修改軟體。Clutter的移植是由Collabora所開放,由Bosch所贊助。

還有一個專案與WebKit同步(由Pleyo所贊助)[58],被稱之為Origyn Web Browser,他提供了一個多元的移植方式,將其移植到抽象的平台,目的是讓移植到嵌入式或是輕量系統可以更快速簡單[59]。這個移植被使用在嵌入式裝置,例如set-top boxes、PMP,而他已經被移植到AmigaOS[60][61]AROS[62]MorphOS,MorphOS 1.7是第一個支援HTML5媒體標籤的Origyn Web Browser (OWB)[63][64]

分支[编辑]

在2013年4月3日,Google宣布他將自行開發WebCore的分支,也就是Blink引擎。Chrome的開發者由於希望在瀏覽器的開發上擁有更大的自由度,同時避免與上游衝突,更可透過移除Chrome沒有使用的元件而簡化自己的程式庫,所以決定開發WebKit的分支版本。同時Opera软件在同年稍早也宣布,他們將自有引擎轉換到Chromium的程式庫,在此時也同時轉換到Blink的分支[34]。根據這份聲明,WebKit的開發者開始討論移除Chrome相關程式碼的可能性,以精簡整個WebKit程式庫[65]

元件[编辑]

WebCore[编辑]

WebCore是一個由WebKit專案所開發的佈局(Layout)、渲染(Rendering)及HTML和SVGDOM函式庫,完整的程式碼皆由GNU宽通用公共许可证所授權,WebKit框架包裝了WebCore及JavaScriptCore,並提供一個Objective-C应用程序接口來接介由C++所開發的WebCore渲染引擎及JavaScriptCore腳本引擎,透過Cocoa API就可以在應用程式中很簡單的使用這些元件。之後的版本同時包含了一個跨平台的C++抽象平台,並且提供各種API使用。

WebKit通過Acid2Acid3的測試,包含完美像素的渲染(pixel-perfect rendering)以及沒有任何時間及不順的問題[66]

JavaScriptCore[编辑]

JavaScriptCore是一個在WebKit中提供JavaScript引擎的框架,而且在OS X作為其他內容的腳本引擎[11][67]。JavaScriptCore最初是為KDE的JavaScript引擎(KJS)函式庫及PCRE正则表达式函式庫,JavaScriptCore從KJS及PCRE復刻之後,已比原先進步了許多,有了新的特色以及極大的效能改進[68]

在2008年6月2日,WebKit專案宣布,將被重寫為"SquirrelFish",它是一個字节码直譯器[27][28],這個專案演變成SquirrelFish Extreme(簡稱為SFX,市場稱之為Nitro),首次公開於2008年9月18日,它會將Javascript編譯為原生的机器语言,不再需要字节码直譯器,同時加速了JavaScript的執行效率[29]

Drosera[编辑]

Drosera是一個JavaScript调试工具,它被包含在每日編譯的WebKit版本內[69][70]。它被命名為茅膏菜屬,這是一種食虫植物。Drosera目前已經被Web Inspector取代了[71]

跨平台之路[编辑]

iOS[编辑]

2007年6月29日,iPhone上市,WebKit通过Safari浏览器进入iOS平台,而且立即成为当时iOS平台唯一的排版引擎。

苹果公司[72]成为了这一项目的领导者。

Windows[编辑]

2008年3月18日,Safari 3.1 for Windows转正,解决了Windows平台下WebKit一直存在的部分兼容性问题。同年9月3日推出的Google Chrome使得这一平台进一步成熟。而在Windows Mobile战线,领先推出稳定版的是拓驰公司的Iris Browser。

Windows[73]是除Mac OS X[74]外另一个得到WebKit.org官方支持的版本。

Linux[编辑]

2008年10月22日投入市场的Android,其内置浏览器Google Chrome Lite代表着脱胎于Linux的Webkit内核“回归”Linux平台。尽管WebKit的原型Khtml是由Qt写成,但Linux下当前最受瞩目的WebKit项目却是Gnome领导的WebKit/Gtk+。不过随着奇趣科技于2008年6月被Nokia收购,Qt方面[75]也加快了WebKit的开发进程。目前,Google Chrome,Xfce的Midori,GNOME的Epiphany、KDE的Konqueror,Arora以及QupZilla是Linux系统下最流行的Webkit内核浏览器。

Symbian[编辑]

2005年,诺基亚公司S60团队成为手机端WebKit的先驱,他们将WebKit框架移植到了Symbian S60平台,作为S60第三版的浏览器内核。

现在使用WebKit引擎的浏览器[编辑]

开源[编辑]

  • Midori:当前最新测试版0.1.5所用的引擎版本是WebKitGTK+ 1.1.13
  • Epiphany:原使用Gecko,2.28版開始改用WebKit
  • Arora:当前最新版本号是0.11.0,使用QtWebKit调用Webkit核心
  • QupZilla:当前最新版本号是1.3.5,使用QtWebKit调用Webkit核心

非开源[编辑]

Avant Browser 当前最新正式版2018 build 1
采用Trident/WebKit/Gecko三引擎。[76]
Lunascape 当前最新正式版6.15.1
采用Trident/WebKit/Gecko三引擎。[77]
Safari 当前最新版。
Sleipnir 当前最新正式版6.2.10
采用WebKit引擎。
所用的引擎版本是 Blink 537.36 (Chromium 64.0.3282.140)[78]
搜狗高速浏览器 當前最新正式版7.5.8.27113
其2.0版开始采用Trident/WebKit双引擎。[79]
傲游浏览器 当前最新正式版5.1.6.3000。
QQ浏览器 當前最新正式版9.6.11165.400
腾讯公司的浏览器产品,采用Trident/WebKit双引擎。[80]

於2013年2月13日,Opera亦宣布將轉用Webkit引擎。[81][82]

参考资料[编辑]

  1. Safari is released to the world. Donmelton.com. [2013-01-13]. 
  2. 2.0 2.1 2.2 '(fwd)Greetings from the Safari team at Apple Computer' - MARC. Lists.kde.org. 2003-01-07 [2013-01-13]. 
  3. The WebKit Open Source Project. [2012-04-07] (英语). 
  4. Maciej Stachowiak. Companies and Organizations that have contributed to WebKit. WebKit Wiki. 2008-11-09 [2008-11-17]. 
  5. The WebKit Open Source Project—Getting the Code. Webkit.org. [2010-12-27]. 
  6. Barth, Adam. Chromium Blog: Blink: A rendering engine for the Chromium project. Blog.chromium.org. 2013-04-03 [2013-06-14]. 
  7. Lawson, Bruce. Bruce Lawson’s personal site : Hello Blink. Brucelawson.co.uk. [2013-06-14]. 
  8. Open Source – WebKit. Apple. [2009-03-05]. 
  9. Apple's "WebKit" is now a Registered Trademark in the US. [2013-03-07]. 
  10. Melton, Don. Attention Internets! WebKit is not 10 years old today. That happened on June 25. I know the date because that’s when I started the project.. Twitter. 2011-08-25 [2011-10-13]. 
  11. 11.0 11.1 Stachowiak, Maciej. JavaScriptCore, Apple’s JavaScript framework based on KJS. kde-darwin (邮件列表). 2002-06-13 [2008-08-21]. (原始内容存档于2007-03-10). 
  12. KWQ(讀作「quack」)是an implementation of the subset of Qt required to make KHTML work on OS X。它is written in Objective C++。
  13. Safari and KHTML again. kdedevelopers.org. 2005-04-30 [2010-02-20]. [永久失效連結]
  14. So, when will KHTML merge all the WebCore changes?. kdedevelopers.org. [2010-02-20]. (原始内容存档于2010-05-29). 
  15. The bitter failure named "safari and khtml" 互联网档案馆存檔,存档日期2010-09-18.
  16. Open-source divorce for Apple's Safari?
  17. WebCore – KHTML – Firefox: Know your facts! 互联网档案馆存檔,存档日期2009-02-10.
  18. Konqueror now passes Acid2
  19. 19.0 19.1 Daniel Molkentin. Apple Opens WebKit CVS and Bug Database. KDE News. June 7, 2005 [2007-01-16]. 
  20. Ars at WWDC: Interview with Lars Knoll, creator of KHTML
  21. 21.0 21.1 Unrau, Troy. The unforking of KDE’s KHTML and WebKit. Ars Technica. 2007-07-23 [2007-07-30]. 
  22. KDE Development Platform 4.5.0 gains performance, stability, new high-speed cache and support for WebKit
  23. Next Generation KDE Technologies Ported to WebCore
  24. CSS Transforms
  25. CSS3 Animations
  26. HTML5 Media Support by Antti Koivisto, Surfin' Safari blog, November 12, 2007
  27. 27.0 27.1 Announcing SquirrelFish
  28. 28.0 28.1 SquirrelFish project
  29. 29.0 29.1 Introducing SquirrelFish Extreme
  30. Changeset 40439 – WebKit. Trac.webkit.org. 2009-01-30 [2010-12-27]. 
  31. WebKit2 wiki. Webkit.org. [2012-08-03]. 
  32. Announcing WebKit2. Webkit.org. [2010-12-27]. 
  33. Introducing the Nokia N9: all it takes is a swipe!. Nokia Corporation. [2011-06-21]. (原始内容存档于2011年6月24日). 
  34. 300 million users and move to WebKit
  35. Nokia S60 Webkit Browser 互联网档案馆存檔,存档日期2005-12-06.
  36. Google Chrome, Google’s Browser Project
  37. Comic describing the Google Chrome Project
  38. 2012-02-08 15:06. PS3、ファームウェアv4.10からWebKitへ。 - あまたの何かしら。. D.hatena.ne.jp. 2012-02-08 [2013-01-13]. 
  39. Epiphany Mailing list – Announcement: The Future of Epiphany
  40. Chen, Brian X. HP Launches WebOS-Powered Tablet, Phones. Wired.com. [2013-01-13]. 
  41. A Brand New Steam
  42. 100 Million Club (H1 2010 update). 100 Million Club (H1 2010 update). VisionMobile. [1 March 2011]. (原始内容存档于2011-03-01). 
  43. Christopher Pecoraro. WebKit Will-Surpass-Trident/MSHTML market share. Irventu weblog. February 18, 2012 [2012-02-18]. (原始内容存档于2012年6月29日). 
  44. Christopher Pecoraro. WebKit Will Rule the World (Wide Web). Irventu weblog. October 15, 2011 [2011-10-15]. (原始内容存档于2012年4月3日). 
  45. Maciej Stachowiak. The Obligatory iPhone Post. Surfin' Safari weblog. January 10, 2007 [2008-01-24]. 
  46. Android Uses WebKit
  47. Palm Pre in-depth impressions, video, and huge hands-on gallery
  48. Joshua Topolsky. New Amazon Kindle announced: $139 WiFi-only version and $189 3G model available August 27th in the US and UK. 
  49. Syllable WebKit Port, Syllable Server
  50. Webkit port: talking to Andrea "xeD" Anzani. Haiku Project. (原始内容存档于2012-06-06). 
  51. Cow launched! |Robert Norris’ Blog on porting WebKit to AROS 互联网档案馆存檔,存档日期2008-12-01.
  52. WebKitGTK+ project website
  53. Alp Toker – WebKit/Gtk+ is coming
  54. QT WebKit 互联网档案馆存檔,存档日期2009-08-03.
  55. WebKitClutter project website
  56. ProFUSION. Profusion.mobi. [2013-01-13]. 
  57. pleyo
  58. See OWB forge
  59. AmigaOS OWB official page
  60. Amiga – Powering through, dead or alive!. amigaweb.net. [2010-06-02]. (原始内容存档于2008-05-02). 
  61. AROS OWB developer page 互联网档案馆存檔,存档日期2009-03-04.
  62. Origyn Web Browser for MorphOS. Fabian Coeurjoly. [2010-01-04]. 
  63. Thom Holwerda. Origyn Web Browser 1.7 Supports HTML5 Media, More. OSNews. March 8, 2010 [2010-03-08]. 
  64. WebKit developers planning Chromium extraction. The H. [9 April 2013]. 
  65. Maciej Stachowiak. Full Pass Of Acid3. Surfin' Safari – The WebKit Blog. 2008-09-25 [2008-09-29]. 
  66. The WebKit Open Source Project – JavaScript
  67. The Great Browser JavaScript Showdown. 2007-12-19. 
  68. WebKit.org Drosera wiki article
  69. Introducing Drosera. Surfin’ Safari. 
  70. Commit removing Drosera. 
  71. DeadLink 互联网档案馆存檔,存档日期2009-02-27.
  72. Deadlink Archive.is存檔,存档日期2012-07-17
  73. Archived Nightly Builds of Trunk[永久失效連結]
  74. Deadlink 互联网档案馆存檔,存档日期2009-03-22.
  75. 關於Avant瀏覽器
  76. Lunascape - simple easy to use multi-featured web browser
  77. Fenrir Inc. - Free Sleipnir Web browser
  78. 搜狗高速浏览器首页
  79. QQ浏览器官方网站
  80. Opera網誌:每月三億用戶及轉用Webkit,2013年2月13日
  81. Opera月活躍用戶數突破三億大關,將轉向WebKit引擎,2013年2月14日