WebKit

title: 缘起.
content: WebKit的程序码源自1998年所开发的KDE的HTML排版引擎KHTML及KDE的JavaScript引擎KJS的程序码。Apple的Don Melton于2001年6月25日开始了WebKit这个专案,当时WebKit仅为KHTML及KJS的复刻,Melton在电子邮件中向KDE开发者解释,KHTML及KJS比起其他技术有着更容易开发、更轻巧(少于140000行程序码)、更加干净的设计,以及更与标准相容的优势,KHTML及KJS将会透过连接器函式库(adapter library)的帮忙被移植到OS X,并重新命名为WebCore及JavaScriptCore。JavaScriptCore在2002年6月,于KDE的邮件列表(mailing list)中首度发表,包含着苹果电脑首次释出的部分。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及OS X特定函式)将会在KDE的KHTML中缺席,这行为被称为不同的发展策略。
title: 开发分裂.
content: 由于这两个分支(KHTML及WebCore)有着不同的目的而进行开发,所以他们程序码互相补丁(patch)的难度越来越高。 KHTML的开发者认为,他们不喜欢接受苹果电脑对于KHTML的改变,并宣称两个组织的关系有些不好(a bitter failure),苹果提交他们相当大的补丁,其中包含相当大数目的改变,但是却缺少相关文件,并且经常包含着未来的扩充,然而这些补丁对于KDE的开发者而言,要整合回KHTML是相当困难的,此外,苹果电脑要求开发者阅览Apple的程序码之前必须签署保密条款(non-disclosure agreements),甚至还不能存取苹果电脑的bug数据库。  在公布"离婚"的期间,KDE开发者Kurt Pfeifle("pipitas")贴出了一篇文章,宣称KHTML开发者已经设法从WebCore移植许多(但非全部)Safari所改进的项目回KHTML,而他们一直都希望这些改进是来自于苹果电脑。这篇文章让Apple开始联络KHTML的开发者,并讨论有关增进彼起关系的方法及未来的合作模式,事实上KDE专案确实有能力合并一些项目,来改进KHTML的渲染速度以及加入一些新的功能特色,包含Acid2渲染测试的改进。  自从新闻播报了fork事件之后,Apple在CVS发布了他们自己维护的WebKit版本,在他们发布代码后,Apple及KHTML开发者已经加深了合作关系,许多KHTML的开发者也成为了WebKit SVN代码库的审查(Reviewer)及提交者(Submitter)。  WebKit工作团队同时也逆转许多Webkit程序码当中,专为苹果特定的修正,并且实现了一个平台特定的抽象层,可使渲染的程序码于其他平台可以更顺利的运作。  在2007年7月,Ars Technica网站发布一篇文章,指出KDE开发团队将从KHTML转移到WebKit,再经由多年的整合,KDE开发平台4.5于2010年8月释出,它同时支援WebKit及KHTML,而KHTML的开发仍在继续。
title: 开源.
content: 在2005年6月7日,Safari开发者戴夫·海厄特(Dave Hyatt)于他的blog宣布Apple将把Webkit开源(之前仅有WebCore及JavaScriptCore开源),并且开放了WebKit的CVS程序库以及臭虫数据库工具。这项消息由苹果电脑软件工程的高阶副总(Senior Vice President)Bertrand Serlet于苹果电脑2005年的Worldwide Developers Conference公开。  在2005年12月中,可缩放向量图形的支援被加入了标准版本,在2006年1月初,这项程序码从CVS转移至Subversion。  WebKit的JavaScriptCore及WebCore元件目前以GNU较宽松公共许可证方式授权,而其他的WebKit元件则是以BSD授权公开。
title: 更进一步发展.
content: 在2007年一开始,开发团队开始实现层叠样式表(CSS)的扩充,包含动画、转换(transitions)以及2D和3D的转场(transform),这样的扩充在2009年W3C的标准中被列入草案。  在2007年11月,这项专案宣布,他们已经完成了HTML5媒体特色的支援,允许页面中以原生的方式嵌入影片,并且可以被script所控制。  在2008年6月2日,WebKit专案宣布他们重写了JavaScriptCore,被称为"SquirrelFish",它是一个字节码直译器(Bytecode Interpreter),这项专案验后来变成SquirrelFish Extreme(SFX),它可将JavaScript编译为机器语言而不再需要直译器,这样的做法加速了JavaScript的执行,这项专案于2008年9月18日发布。一开始,SFX仅支援x86架构,于2009年1月底,SFX于OSX支援了x86-64架构,并且在该平台通过了所有的测试。
title: WebKit2.
content: WebKit2发布于2010年4月8日,WebKit2的目标是将元件抽象化,并提供更干净的网页渲染,它会利用从周围的界面或是应用程序的壳,建立一个环境使网页的内容(JavaScript、HTML、排版等等)将会在另外一个进程(Process)运行,比起WebKit,这个抽象化的做法打算令WebKit2可重复使用一个更简单的程序。因为WebKit2对比起WebKit有"一个不相容的API",所以导致他的名字被改变为WebKit2。  目前WebKit2仅开放于Mac、Windows及MeeGo-Harmattan。
title: 使用.
content: 作为渲染引擎使用的WebKit,被使用在Safari及Google Chrome浏览器于Windows、OS X、iOS及Android平台(然而,Chrome仅仅使用WebCore,而JavaScript引擎及多工系统则自行开发)。其他的在OS X底下的应用程序也使用WebKit,例如Apple的e-mail用户端软件Mail以及微软的个人信息管理系统Microsoft Entourage 2008,皆使用WebKit来渲染HTML内容的e-mail讯息。  Opera软件公司于2013年初宣布,他们将停止他们自行开发的Presto排版引擎,由Webkit专案取代,在未来将会以Webkit来取代,并贡献给Webkit专案。
title: 内建平台.
content: 新的网页浏览器已经内建了WebKit,例如Symbian手机的S60浏览器、BlackBerry浏览器(ver 6.0+)、Midori、Chrome浏览器、Android网页浏览器、PlayStation_3_系统软件4.0以上所使用的浏览器、KDE的Rekonq浏览器以及Plasma Workspaces都使用WebKit作为原生的网页渲染引擎。WebKit已经被OmniWeb、iCab及Web(前面所说的Epiphany)采用,并取代原有的渲染引擎,Sleipnir于2012年开始在他们的浏览器开发WebKit,并于2012年5月17日进入第三个Alpha阶段。Epiphany同时支援Gecko及WebKit,但他们的团队描述Gecko的发布周期及未来的开发计划将会令他们对于Gecko的支援太过笨重。HP的WebOS使用WebKit作为它应用程序执行时期的基础。Valve Corporation的Steam最新更新的界面,使用WebKit作为它界面的渲染以及内建的浏览器。WebKit在Adobe_AIR中被使用在渲染HTML及执行JavaScript,在Adobe Creative Suite CS5,WebKit用来渲染部分元件的使用界面。  截至2010年上半年,分析估计内建WebKit浏览器的移动设备已经达到3亿5千万,,WebKit的市场份额已经达到36%,同等于Internet Explorer所使用的Trident/MSHTML引擎的市场份额,如果这个成长持续下去,使用WebKit的总和(Chrome、Safari以及智能手机/平板)于2012年底将会超过50%,而WebKit将会是市场的领导者。
title: 移植.
content: 在Hyatt发布WebKit开源之后的那一周,Nokia宣布他们将移植WebKit到Symbian操作系统,并为S60开发一个基于WebKit的移动设备浏览器,现在已经被命名为Web Browser for S60,它被使用在Nokia、Samsung、LG及其他使用Symbian S60的移动电话。Apple也已经移植WebKit到iOS并将其运行于iPhone、iPod Touch及iPad,它被使用在这些装置的网页浏览器及电子邮件软件。Android移动电话平台也使用WebKit作为它网页浏览器的基础,而于2009年1月发布的Palm Pre使用WebKit作为它的界面。Amazon Kindle 3包含着一个以WebKit打造实验性质的浏览器。  在2007年6月,Apple宣布WebKit已经被移植到iOS,并作为Safari的一部分,还有一些正在进行中的项目,将WebKit移植到开源的操作系统Syllable、Haiku以及AROS Research Operating System(AROS).。  WebKit也被移植到许多Toolkits使其支援多平台,例如GTK+ toolkit、Qt framework,、Adobe AIR、Enlightenment Foundation Libraries (EFL)以及Clutter toolkit。Qt Software(Digia所拥有)于Qt 4.4包含Qt port,Qt port的WebKit也可使用在Konqueror 4.1版本之后。在Qt底下的Iris Browser也使用WebKit。The Enlightenment Foundation Libraries (EFL)的移植还在进行(经由Samsung及ProFUSION),他们将专注在嵌入式及行动系统,并将其作为一个独立运行的浏览器、Widgets/Gadgets、文件阅读及修改软件。Clutter的移植是由Collabora所开放,由Bosch所赞助。  还有一个专案与WebKit同步(由Pleyo所赞助),被称之为"Origyn Web Browser",他提供了一个多元的移植方式,将其移植到抽象的平台,目的是让移植到嵌入式或是轻量系统可以更快速简单。这个移植被使用在嵌入式装置,例如set-top boxes、PMP,而他已经被移植到AmigaOS、AROS及MorphOS,MorphOS 1.7是第一个支援HTML5媒体标签的Origyn Web Browser (OWB)。
title: 分支.
content: 在2013年4月3日,Google宣布他将自行开发WebCore的分支,也就是Blink引擎。Chrome的开发者由于希望在浏览器的开发上拥有更大的自由度,同时避免与上游冲突,更可透过移除Chrome没有使用的元件而简化自己的程序库,所以决定开发WebKit的分支版本。同时Opera软件在同年稍早也宣布,他们将自有引擎转换到Chromium的程序库,在此时也同时转换到Blink的分支。根据这份声明,WebKit的开发者开始讨论移除Chrome相关程序码的可能性,以精简整个WebKit程序库。
title: 元件.
title: WebCore.
content: WebCore是一个由WebKit专案所开发的布局(Layout)、渲染(Rendering)及HTML和SVG的DOM函式库,完整的程序码皆由GNU宽通用公共许可证所授权,WebKit框架包装了WebCore及JavaScriptCore,并提供一个Objective-C应用程序接口来接介由C++所开发的WebCore渲染引擎及JavaScriptCore脚本引擎,透过Cocoa API就可以在应用程序中很简单的使用这些元件。之后的版本同时包含了一个跨平台的C++抽象平台,并且提供各种API使用。  WebKit通过Acid2及Acid3的测试,包含完美像素的渲染(pixel-perfect rendering)以及没有任何时间及不顺的问题。
title: JavaScriptCore.
content: JavaScriptCore是一个在WebKit中提供JavaScript引擎的框架,而且在OS X作为其他内容的脚本引擎。JavaScriptCore最初是为KDE的JavaScript引擎(KJS)函式库及PCRE正则表达式函式库,JavaScriptCore从KJS及PCRE复刻之后,已比原先进步了许多,有了新的特色以及极大的效能改进。  在2008年6月2日,WebKit专案宣布,将被重写为"SquirrelFish",它是一个字节码直译器,这个专案演变成SquirrelFish Extreme(简称为SFX,市场称之为Nitro),首次公开于2008年9月18日,它会将Javascript编译为原生的机器语言,不再需要字节码直译器,同时加速了JavaScript的执行效率。
title: Drosera.
content: Drosera是一个JavaScript调试工具,它被包含在每日编译的WebKit版本内。它被命名为"茅膏菜属",这是一种食虫植物。Drosera目前已经被Web Inspector取代了。
title: 跨平台之路.
title: iOS.
content: 2007年6月29日,iPhone上市,WebKit通过Safari浏览器进入iOS平台,而且立即成为当时iOS平台唯一的排版引擎。  苹果公司成为了这一项目的领导者。
title: Windows.
content: 2008年3月18日,Safari 3.1 for Windows转正,解决了Windows平台下WebKit一直存在的部分兼容性问题。同年9月3日推出的Google Chrome使得这一平台进一步成熟。而在Windows Mobile战线,领先推出稳定版的是拓驰公司的Iris Browser。  Windows是除Mac OS X外另一个得到WebKit.org官方支持的版本。
title: Linux.
content: 2008年10月22日投入市场的Android,其内置浏览器Google Chrome Lite代表着脱胎于Linux的Webkit内核“回归”Linux平台。尽管WebKit的原型Khtml是由Qt写成,但Linux下当前最受瞩目的WebKit项目却是Gnome领导的WebKit/Gtk+。不过随着奇趣科技于2008年6月被Nokia收购,Qt方面也加快了WebKit的开发进程。目前,Google Chrome,Xfce的Midori,GNOME的Epiphany、KDE的Konqueror,Arora以及QupZilla是Linux系统下最流行的Webkit内核浏览器。
title: Symbian.
content: 2005年,诺基亚公司的S60团队成为手机端WebKit的先驱,他们将WebKit框架移植到了Symbian S60平台,作为S60第三版的浏览器内核。
title: 现在使用WebKit引擎的浏览器.
title: 非开源.
content: 于2013年2月13日,Opera亦宣布将转用Webkit引擎。

Summary: WebKit是一种用来让网页浏览器绘制网页的排版引擎。它被用于Apple Safari。其分支Blink被用于基于Chromium的网页浏览器,如:Opera与Google Chrome。

WebKit: WebKit is a browser engine developed by Apple and primarily used in its Safari web browser, as well as all the iOS web browsers. WebKit is also used by the BlackBerry Browser, the Tizen mobile operating systems, and a browser included with the Amazon Kindle e-book reader. WebKit's C++ application programming interface (API) provides a set of classes to display Web content in windows, and implements browser features such as following links when clicked by the user, managing a back-forward list, and managing a history of pages recently visited.