[转]Webkit内核探究【1】——Webkit简介

注:【转载请注明文章来源、保持原样】html

出处:http://www.cnblogs.com/jyli/archive/2010/01/31/1660355.html
做者:李嘉昱web

研究Webkit内核已经有一段时间了,在这期间我花了不少时间去研读webkit代码,并在网上查阅了很多的资料。在这以后,我开始尝试对Webkit内核进行剪裁,以便获得本身所需的部分。浏览器

俗语有言,“独学而无友 则孤陋而寡闻”,遂本着交流的态度拿出来与你们分享之,顺便回顾一下本身这段时间以来走过的路。到目前,本人虽不能说是精 通Webkit内核 ,但也总算是在Webkit内核中游历过了一番,并得到了很多Webkit内核代码的直接经验。ide

在此,我将以Webkit内核代码为基础,详细介绍Webkit内核的组成以及其各个模块的功能和实现。文章写到哪算哪,有了新的认识也会更新,补充。ui

 

什么是Webkitgoogle

Wekbit是一个开源的Web浏览器引擎,也就是浏览器的内核。Apple的Safari, Google的Chrome, Nokia S60平台的默认浏览器,Apple手机的默认浏览器,Android手机的默认浏览器均采用的Webkit做为器浏览器内核。Webkit的采用程度由 此可见一斑,理所固然的成为了当今主流的三大浏览器内核之一。另外两个分别是Gecko和Trident,大名鼎鼎的Firefox即是使用的Gecko 内核,而微软的IE系列则使用的是Trident内核。虽然目前市场上IE内核浏览器仍然占据大多数市场份额,但其余内核浏览器也大有后来居上之势。其 中,Webkit做为一款优秀的浏览器内核,它众多优秀的特性引发业内的的普遍关注。尤为是近来,google的加入更是让Webkit有所升温,从 Goole Chrome浏览器, Goole Anroid手机操做系统内置浏览器均采用Webkit做为内核, 近来推出的Chrome OS更是让人期待。从实现角度来说,听说其比Gecko代码更为整洁清晰,我目前还没研究过Gecko的代码,因此还无从比较。spa

 

Wekbit作了什么?操作系统

做为浏览器的内核,Webkit作了哪些工做?为了了解这些,先让咱们来看下一个Web浏览器究竟作了什么。咱们能够从输入输出的角度来看一个 Web浏览器为咱们作了哪些工做。先看一个简单的例子,Web浏览器的输入是一个HTML文档,输出则是一个咱们用眼睛所看到的一个Web页面, 就普通用户而言它的输入和输出就是这么简单,以下图所示。设计

那么Webkit的输入和输出又是什么呢?若是能明白这个,那咱们就能很清楚的知道Webkit究竟是作什么的了。不过如今要说清楚这个还有点困 难,由于Webkit的输出就要复杂些了,由于它的输出原本就非直接面向用户,如今简单点来讲,Webkit的输入是web 文档,输出是一些看不见的模型,浏览器上层借助于这些模型来绘制出咱们所看到的实际页面。后面适当的时候会更具体的探讨这些模型。3d

 

Wekbit组成

 

 

 

Webkit实际上包含三大部分,至少从代码结构上来讲是这样的,固然,若是细分的话还可以划分出更多的模块。以下图所示

 

其中,WebCore是Webkit的核心部分,它实现了对文档的模型化,包括了CSS, DOM, Render等的实现, JavaSript Core显然是对JavaSript支持的实现。而橘黄色标注的Webkit部分包含了不少不一样平台对Webkit封装的实现,即抽象出了与浏览器所能直 接对应的一些概念的实现,如,WebView,WebPage, WebFrame等。这三部分共同构成了Webkit, 在源码中,它们分别对应这个这三个目录, 即Webkit三大部分为WebCore, JavaSript Core,Webkit。

 

应用程序如何利用Webkit的

 

 

从下图能够看出,利用Webkit的应用程序的位置处于Webkit模块之上,应用程序并不直接和WebCore以及JavaScript Core来打交道,也不须要和它们打交道,而是同我前面提到过的Webkit模块来交互,从而屏蔽了WebCore和JavaSript Core部分。Webkit模块实际上抽象出了大多数应用程序所须要的那一部分,这里所说的大多数应用程序其实就是指的浏览器, 对于实现一个浏览器而言,Webkit模块所提供的接口已经足够。不过对于某些应用,可能得对其实施必定的改造,可是话又说回来,Webkit原本就是被设计成为Browser的内核而被实现的。

看到这里,也就是说若是咱们要想利用Webkit来实现一个功能完善Browser或其余类浏览器应用程序的话,你只须要了解Webkit模块部分 就足够了,更确切的说只须要了解它所提供的接口就够了。事实上,大多数平台,若是采用了Webkit内核做为浏览器内核组件的话,所提供的对应文档部分都 是关于Webkit模块所提供的接口的描述。不少平台都提供了Browser组件,其使用方法就像是其余可视组件同样,在应用程序中应用起来很是方便。比 如,某平台提供了叫作WebView的可视化组件,咱们就能够经过以下几行代码来展现一个网页, 使用的代码仅仅三行。

WebView *view = new WebView();

view->load(Url("http://www.google.cn"));

view->show();

以Webkit做为浏览器组件的平台有很多,包括Symbian S60, Android, Qt, GTK等等,前不久看到消息,好像Black Berry也准备在自家的手机上使用Webkit了。

 

待续....

相关文章
相关标签/搜索