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

WebKit

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

WebKit是一種用來讓网页浏览器繪製網頁排版引擎。它被用於Apple Safari。其分支被用於基於Chromuim的網頁瀏覽器,如: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),甚至還不能存取蘋果電腦的臭蟲資料庫[來源請求]

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

自从新闻播报了fork事件之后,Apple在CVS[19]发布了他們自己維護的WebKit版本,在他們发布代码後,Apple及KHTML開發者已經加深了合作關係,許多KHTML的開發者也成為了WebKitSVN代码库的審查(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瀏覽器於Windows、OS X、iOSAndroid平台(然而,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],這個專案演變成SquirreFish 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 当前最新正式版2012 build169
采用Trident/WebKit/Gecko三引擎。[76]
Lunascape 当前最新正式版6.8.10
采用Trident/WebKit/Gecko三引擎。[77]
Safari 当前最新版。
Sleipnir 当前最新正式版3.50
采用Trident/WebKit双引擎。
所用的引擎版本是536.5(Chromium 19.0.1084.46)[78]
搜狗高速浏览器 其最新的2.0正式版开始采用Trident/WebKit双引擎。[79]
傲游浏览器 当前最新测试版︰4.4.3.800 Beta(2014年10月23日,​21個月前​(2014-10-23[±]所用的引擎版本是535.3(MxWebkit1.1.3.206)。
QQ浏览器6 腾讯公司的浏览器产品,采用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 mailing list. 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]. 
  15. ^ The bitter failure named "safari and khtml"
  16. ^ Open-source divorce for Apple's Safari?
  17. ^ WebCore – KHTML – Firefox: Know your facts!
  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]. 
  34. ^ 300 million users and move to WebKit
  35. ^ Nokia S60 Webkit Browser
  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]. 
  43. ^ Christopher Pecoraro. WebKit Will-Surpass-Trident/MSHTML market share. Irventu weblog. February 18, 2012 [2012-02-18]. 
  44. ^ Christopher Pecoraro. WebKit Will Rule the World (Wide Web). Irventu weblog. October 15, 2011 [2011-10-15]. 
  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. 
  51. ^ Cow launched! |Robert Norris’ Blog on porting WebKit to AROS
  52. ^ WebKitGTK+ project website
  53. ^ Alp Toker – WebKit/Gtk+ is coming
  54. ^ QT WebKit
  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]. 
  61. ^ AROS OWB developer page
  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[失效連結]
  72. ^ Deadlink[失效連結]
  73. ^ Archived Nightly Builds of Trunk
  74. ^ Deadlink[失效連結]
  75. ^ 關於Avant瀏覽器
  76. ^ Lunascape - simple easy to use multi-featured web browser
  77. ^ Fenrir Inc. - Free Sleipnir Web browser - Top Market Share in Japan 2012 Fenrir Inc
  78. ^ 搜狗高速浏览器首页
  79. ^ QQ浏览器5官方网站
  80. ^ Opera網誌:每月三億用戶及轉用Webkit,2013年2月13日
  81. ^ Opera月活躍用戶數突破三億大關,將轉向WebKit引擎,2013年2月14日