WebKit 简单来说主要由两部分来组成: WebCore, JavaScriptCore 。
WebCore :主要完成 DOM 和 DOM HTML , CSS ,并负责页面的布局,渲染。在现在的版本中还支持 SVG 等,同时也完成一些其他功能,例如历史,页面载入还有其他一些与平台相关的功能,但是主要集中在 DOM , DOM HTML 和渲染 。这里就大体了解以下功能,在后面的章节中会进行详细的介绍。
JavaScriptCore :是一个 JavaScript 引擎,由 KDE 的 JavaScript 引擎 KJS 衍生而来,支持很多新的功能,并且有很好的性能,在 2008 年时, WebKit 重新编写了 JavaScriptCore 并命名为 SquirrelFish ,与之前的解释器使用遍历语法树的实现方式不同的是, SquirrelFish 的实现采用字节码。当然Chrome所使用的V8引擎也具有很好的性能,具体了解Follow下面的链接http://code.google.com/p/v8/ 。Script的引擎不是本文的研究重点,有兴趣的可以自行进行研究。
-遍历语法树实现方式存在的高代价问题,在 SquirrelFish 字节码引擎中基本都不存在。首先,一个字节码流能够精确描述执行程序所需的操作,编译成字节码实际上隐性地跳过了不相关的语法结构。其次,字节码调度程序只是一个简单地从内存中直接读取,转而间接调度分支程序的过程。因此,执行字节码指令要比访问语法树节点快得多。第三,由于不再需要语法树,解释器无需继续在语法树节点间传送执行状态。
在解析器使用字节码之后,目前实现的编译时优化 有:
* 常量折叠( constant folding )
* 更强的拷贝传播
* 类型推断——包括精确和推测两种方式
* 基于表达式上下文的特化——尤其是 void 和 boolean 上下文
* 窥孔优化( peephole optimization )
* 逃逸分析 ( escape analysis ) ]
可以参考: http://webkit.org/blog/189/announcing-squirrelfish/
WebKit是一款开源的网页浏览引擎, 使用 HTML、CSS、 Javascript和DOM等标准技术来实现加载并显示窗口中的网页内容, 并拥有清晰的源码结构、 极快的渲染速度。WebKit目前支持 HTML4/5、 CSS1/2、 DOM1/2、HTTP/FILE, GIF/JPEG/PNG,XML,SVG,RSS2.0等。其主要由布局渲染 (Webcore)和Javascript引擎( Javascriptcore) 等组成, 还包括Platform与平台相关的一些功能, 如图形图像, 字体, Unicode , I/O,输入法等。