您的位置:首页 > 其它

WebKit开篇:先了解一下WebKit的历史吧

2014-05-13 00:00 1171 查看
Paul Irish 大湿为我们带来了这篇开年大作,文章深入浅出的阐述了各 Webkit port 的迥异,文笔细腻,是一篇不可多得的 Webkit 入门开胃菜。

原文链接: http://paulirish.com/2013/webkit-for-developers/

对于许多开发者而言,WebKit 是一个黑盒子。我们把 HTML, CSS, JS 和一堆资源放进去,然后 WebKit 以某种方式,奇妙地变幻出一个美观而实用的页面。事实上,如同我同事 Ilya Grigorik 所说:

WebKit 它不是一个黑盒子,而是一个白盒子,并且是一个开放的白盒子。

我们也不需要非常深入地去研究WebKit,大概先看以下问题,来了解一下全貌:

WebKit 是什么?

WebKit 不是什么?

基于 WebKit 的浏览器使如何运用 WebKit ?

为什么所有的 WebKit 并不一样「呢」?

WebKit 是什么?

有必要先解释一下极其容易混淆的几个概念,它们是WebKit,WebKit2,Chromium和Chrome。

首先来了解WebKit。

广义上来说,WebKit是一个开源的项目,其前身是来源于KDE的KHTML和KJS。该项目专注于网页内容的展示,开发出一流的网页渲染引擎。它不是浏览器,而且也不想成为浏览器。

该项目包含两个部分,第一是WebCore,其中包含了对HTML,CSS等很多W3C规范的实现;第二部分就是狭义上的WebKit,它主要是各个平台的移植并提供相对应的Web接口,也就是WebView或者类似WebView,这些接口提供操作和显示网页的能力。目前使用WebKit的主流的浏览器或者WebView包括Chrome, Safari, QtWebKit, Android Browser以及众多的移动平台的浏览器。

WebKit2相对于狭义上的WebKit而言,它不是WebKit简单的第二个版本,它是一个新的API层,其最主要的变化在于将网页的渲染置于单独的进程,而接口层则在另外一个进程,它们之间通过IPC来通讯。对于接口的调用者来说,中间的IPC和底下的实现是透明的,这样做的好处有很多,一个很明显的好处是,当网页的渲染出现问题时,不会阻碍Web接口的调用者进程,这会在很大程度上解决或者帮助解决浏览器或者这些调用者的稳定性和安全性等问题。

Chromium是一个建立在WebKit之上的浏览器开源项目,由Google发起的。该项目被创建以来发展迅速,很多先进的技术被采用,如跨进程模型,沙箱模型等等。同时,很多新的规范被支持,例如WebGL,Canvas2D,CSS3以及其他很多的HTML5特性,基本上每天你都可以看到它的变化,它的版本升级很快。在性能方面,其也备受称赞,包括快速启动,网页加载迅速等。

Chrome是Google公司的浏览器产品,它基于chromium开源项目,一般选择稳定的版本作为它的基础,它和chromium的不同点在于chromium是开源试验场,会尝试很多新的东西,当这些东西稳定之后,chrome才会集成进来,这也就是说chrome的版本会落后于chromium。另外一个就是,chrome里面会加入一些私有的codec,这些仅在chrome中才会出现。再次,chrome还会整合Google的很多服务, 最后chrome还会有自动更新的功能,这也是chromium所没有的。

顺便说下Blink

关注Web和HTML5领域的人最近应该都有了解WebKit项目的重磅消息,那就是Google退出WebKit项目,创建自己的渲染引擎Blink

这其实不能说完全没有先兆,合合分分,纯属正常。其实,之前关于WebKit2,双方的争论就非常的大。Apple希望它可以随便加入和删除代码而无需担心它会破坏其它Ports的代码,这遭到很多人的反对和不满。同时,另一方面,Google有很多新的功能希望加入WebKit中,但是WebKit可能并不认可他们。双方分歧越来越多,终于分道扬镳。

这里面有个误区,就是Google的Blink是一个全新的引擎。其实不是这样,Blink目前就是从WebKit直接复制出一个版本出来,然后将与chromium无关的Ports全部移除掉,将代码结构重新整理,就目前而言,Blink的渲染和WebKit是一样,但是,以后两者将各自走不同的路。这有点类似于之前WebKit从KHTML中复制出来一样,历史总是惊人的相似。

目前参与Blink和Chromium大致一样,拥有Chromium的commit权限对Blink也适用。原来一些WebKit的committer和reviewer也开始成为blink的committer。它的提交代码流程,review流程等都是chromium的风格,这对chromium的开发者来说非常熟悉。

Blink从WebKit继承而来,那么未来它会在哪些方面做改变呢?根据chromium官方的说法,目前大概有两个比较大的,后面应该有更多的改变:

跨进程的iframe(out-of-process iframes):为iframes内容创建单独的沙箱进程来渲染它们

将DOM移入JavaScript中,这样JavaScript可以更快的访问DOM

今后,Blink会和WebKit差别越来越大,对Web标准支持也不尽相同,未来的发展如何,让我们拭目以待吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: