什么Webkit?

提起WebKit,大家自然而然地想到浏览器。作为浏览器内部的主要构件,WebKit的主要工作是渲染。给定一个HTML文件,WebKit的工作是 HTML 格式的内容绘制出来,包括, a. HTML 的布局,譬如左边是什么,顶部是什么,中间是什么。 b. 根据用户设定,呈现文字,譬如字体是宋体还是楷书,大小尺寸,重体斜体等等。 c. 显示不同格式的图片,譬如 JPG GIF PNG 等等。所以, WebKit是一个渲染机(Rendering Engine )。

浏览器与用户的交互,主要通过
JavaScript 程序控制 譬如用户在浏览器界面上移动鼠标,有些图标会放大或缩小,颜色会变化等等。 严格说来,JavaScript Engine不属于WebKit,但是WebKit自带了一个JavaScript Engine,SquirrelFish。不过在WebKit框架下,可以把SquirrelFish Java Engine替换成其它版本,而不影响WebKit整体工作。譬如,Google的Chrome浏览器,内部使用的渲染机是WebKit,但是 Google没有用SquirrelFish,而是自己另起炉灶开发了一套JavaScript Engine,取名V8。V8的来历不清楚,或许是因为Google的工程师喝多了V8果蔬饮料,所以就取了这么个名字。就如同Sun Microsystems的工程师喝多了咖啡,于是把他们发明的新语言定名为Java一样。

说起渲染机(Rendering Machine ),微软的 IE 浏览器用的 Rendering Engine ,名曰三叉戟( Trident Firefox 用的 Rendering Engine ,叫 Gecko 。而 Apple Safari ,以及 Google Chrome ,用的 Rendering Engine 都是 WebKit

虽然 IE浏览器 占据大部分市场份额,但是似乎谈论 Trident 的文章不是很多。而 Firefox使用的Gecko,它 的特点是小,有点像 OS 的微内核一样,扩展性很好。 最近几年,谈论 WebKit 的文章很多,甚至有人断言, WebKit是当今最好的Rendering Engine。WebKit之所以大热, 估计与以下几个因素有关。

1. WebKit
的前身是由开源的 Linux 项目组 KDE 设计开发的 KHTML ,后来 Apple 觉得这个产品不仅开源,而且架构设计简洁高效,所以就参与开 发。再后来,在产品未来开发计划上, Apple KDE 产生分歧,于是各干各的, Apple 把产品名字改为 WebKit

2.
基于 WebKit Apple 公司于 2003 年推出 MacOS 平台的浏览器, Safari

3. 2005
年, WebKit 源代码向公众开放。

4.
同年, Nokia 推出 S60 平台的手机浏览器,其内部 Rendering Engine ,也是 WebKit

5.
同年, KDE 宣布放弃 KHTML ,改用 WebKit

6. 2007
年, Apple 推出手机 iPhone ,引起轰动。 iPhone 自带的手机浏览器,也使用了 WebKit iPhone 的浏览器,缩放自如,引人注目。

7. 2008
年, Google 推出浏览器 Chrome ,其内部 Rendering Engine ,也是 WebKit

需要指出的是, Rendering Engine 的用途,并不限于浏览器,而是可以充当通用的 UI 实现平台。譬如,微软的电子邮件软件 Outlook ,虽然不是浏览器,但是其界面渲染,使用了 微软的Rendering Engine,Trident 。甚至微软的 Office 系列软件,也使用了 Trident

为什么要用Rendering Engine来处理渲染,而不是用Java Swing那样的UI工具?估计有两个原因。

1. 方便开发,吸引更多开发者。

Java Swing固然不难用,但是广大开发者更熟悉HTML+CSS+JavaScript。哪个手机能吸引更多开发者,它就能获得更多更好的应用程序。哪个手机能拥有更多更好的应用程序,它的市场前景就更广阔。使用C/C++语言的开发者人数,不如Java的多。Java的用户,不如HTML+CSS+JavaScript的多。Palm WebOS之所以把GUI的管理基于WebKit基础之上,估计主要的目的是吸引广大Web开发者,这些人最熟悉的工具就是 HTML+CSS+JavaScript。

目前非常流行的Web开发工具,Ruby on Rails的缔造者,David H. Hansson,于2007年6月发表过一篇博客,题为“我就是喜欢HTML+CSS+JavaScript,咋了?”(http://ajax.sys-con.com/node/395424)。文中表达了这么一个观点,以 HTML+CSS+JavaScript为代表的Web技术源于实践,它们已经发展和经受了10多年的考验。现在大家要做的,不是去追求无必要的所谓完美,而是用好HTML+CSS+JavaScript,把它们的潜力充分挖掘出来。

或许David H. Hansson的观点有点偏激,但是不可否认的是,他的观点有很多拥护者。基于WebKit之上的GUI系统设计,Palm WebOS是不是有意迎合Web开发者?

2. 工作流程的柔性组织。

复杂一点的应用程序,通常由多个页面组成,页面与页面之间的衔接,称为工作流程。应用程序的更新,不仅涉及每个页面的内容的更改,而且也涉及工作流程的变更。

WebKit 这样的Rendering Engine,不仅提供了单个页面的渲染,而且也提供了历史页面的缓存,支持后退(Back),前进(Forward)以及历史(History)等等功能。同时,WebKit能够记忆用户对于每个页面做过哪些修改,甚至提供恢复(Undo)功能。

新时代新潮流WebOS <wbr>【10】为什么需要Webkit?

Figure 2. WebKit Rendering effect
Courtesy http://www.atoker.com/blog/wp-content/uploads/2008/06/ubrowser-webkit.jpg

单个页面的渲染,多个页面衔接而成的柔性工作流程组织,GUI管理系统都需要提供支持。与其重新开发程序,不如利用现成的WebKit工具库。如果有人问,WebKit与Palm WebOS的GUI管理系统,尤其是Window Server和Window Manager两个模块,是什么关系?或许可以这么猜测,Palm WebOS在实现Window Server和Window Manager两个模块时,调用了WebKit相关APIs。也就是说,Palm WebOS把WebKit拆散了,作为工具库使用。

WebKit的确有很多优势,但是并不完美。尤其是,能不能把WebKit原封不动地照搬到手机上来,作为手机GUI渲染和控制的基石,这个问题比较复杂

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值