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。