瀏覽器辭典:Webkit
WebKit:一個開源的輕量級瀏覽器核心。WebKit 的前身是 KDE 小組的 KHTML。Apple將 KHTML 發揚光大,推出了裝備 KHTML 改進型的 WebKit 引擎的瀏覽器 Safari,獲得了非常好的反響。
WebKit 內核在手機上的應用十分廣泛,例如 Google 的手機 Gphone、 Apple 的 iPhone, Nokia’s Series 60 browser 等所使用的 Browser 內核引擎,都是基于 WebKit。
Webkit項目在LGPL和BSD開源許可協議下發布。
Webkit在各大系統平臺上的移植十分廣泛,其中包括:
iPhone OS:
2007年6月29日,iPhone上市,WebKit進入iPhone OS平臺,而且立即成為iPhone OS平臺獨一無二的排版引擎。
Nokia S60平臺:
諾基亞公司將WebKit移植到Symbian S60操作系統中,并開發了基于Webkit的手機瀏覽器“Web brower for S60”,廣泛用于諾基亞、三星、LG等基于Symbian S60操作系統的手機中。
Web OS:
Palm 推出第一款基于WebKit的操作系統,Palm Pre是第一款基于該系統的手機產品。
Linux:
盡管WebKit的原型K內核是由Qt寫成,但Linux下目前最受矚目的WebKit項目卻是Gnome領導的WebKit/Gtk+。隨著奇趣科技于2008年6月被Nokia收購,Qt方面也加快了WebKit的“回歸”進程。
Midori,Google Chrome,GNOME的Epiphany、KDE的Konqueror,Arora是現在Linux系統下主要的Webkit內核瀏覽器。
Windows:
Webkit內核在Windows上發展最晚,Safari(for Windows),Midori,Google chrome,具有雙核模式的傲游3和搜狗瀏覽器2(極速模式下使用Webkit核心)是最為常見的Webkit瀏覽器。2009年推出的safari和Chrome以及2010年推出的搜狗瀏覽器V2.0Beta和傲游3.0beta都使用的webkit引擎完全通過了acid3測試滿分!
瀏覽器:
2008年9月2日,谷歌公司發布的第一個版本Google Chrome(中文名為谷歌瀏覽器)就采用了Webkit引擎。
2009年,廣受關注的Google手機的自帶的瀏覽器也是Webkit內核,加載網頁速度比IE手機瀏覽器快了近一倍。
2010年,搜狗公司發布的搜狗瀏覽器V2.0采用Webkit引擎。
2010年,傲游3.0采用Webkit引擎。
以下是一些Webkit的技術描述(轉載自博客園李嘉昱的博客):
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的代碼,所以還無從比較。
Wekbit做了什么?
作為瀏覽器的內核,Webkit做了哪些工作?為了了解這些,先讓我們來看下一個Web瀏覽器究竟做了什么。我們可以從輸入輸出的角度來看一個 Web瀏覽器為我們做了哪些工作。先看一個簡單的例子,Web瀏覽器的輸入是一個HTML文檔,輸出則是一個我們用眼睛所看到的一個Web頁面, 就普通用戶而言它的輸入和輸出就是這么簡單,如下圖所示。
那么Webkit的輸入和輸出又是什么呢?如果能明白這個,那我們就能很清楚的知道Webkit到底是做什么的了。不過現在要說清楚這個還有點困 難,因為Webkit的輸出就要復雜些了,因為它的輸出本來就非直接面向用戶,現在簡單點來說,Webkit的輸入是web 文檔,輸出是一些看不見的模型,瀏覽器上層借助于這些模型來繪制出我們所看到的實際頁面。后面適當的時候會更具體的探討這些模型。
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組件,其使用方法就像是其他可視組件一樣,在應用程序中應用起來非常方便。
相關閱讀:Webkit崛起 瀏覽器市場再起風云