WebKit - Wikiwand
For faster navigation, this Iframe is preloading the Wikiwand page for WebKit.

WebKit

维基百科,自由的百科全书

此条目需要更新。 (2017年3月31日)请更新本文以反映近况和新增内容。完成修改时,请移除本模板。
WebKit
原作者KDE[1][2]
开发者苹果公司AdobeGoogleKDE、Igalia及其它开发者
初始版本1998年11月4日,​21年前​(1998-11-04(KHTML发布);2005年6月7日,​15年前​(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]

使用

作为渲染引擎使用的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 AIR、Enlightenment 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. [2020-02-16]. (原始内容存档于2008-03-25). 
  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日
{{bottomLinkPreText}} {{bottomLinkText}}
WebKit
Listen to this article