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的代碼,因此還無從比較。web
Wekbit作了什麼?瀏覽器
做爲瀏覽器的內核,Webkit作了哪些工做?爲了瞭解這些,先讓咱們來看下一個Web瀏覽器究竟作了什麼。咱們能夠從輸入輸出的角度來看一個 Web瀏覽器爲咱們作了哪些工做。先看一個簡單的例子,Web瀏覽器的輸入是一個HTML文檔,輸出則是一個咱們用眼睛所看到的一個Web頁面, 就普通用戶而言它的輸入和輸出就是這麼簡單,以下圖所示。ide
那麼Webkit的輸入和輸出又是什麼呢?若是能明白這個,那咱們就能很清楚的知道Webkit究竟是作什麼的了。不過如今要說清楚這個還有點困 難,由於Webkit的輸出就要複雜些了,由於它的輸出原本就非直接面向用戶,如今簡單點來講,Webkit的輸入是web 文檔,輸出是一些看不見的模型,瀏覽器上層藉助於這些模型來繪製出咱們所看到的實際頁面。後面適當的時候會更具體的探討這些模型。google
Wekbit組成操作系統
Webkit實際上包含三大部分,至少從代碼結構上來講是這樣的,固然,若是細分的話還可以劃分出更多的模塊。以下圖所示設計
其中,WebCore是Webkit的核心部分,它實現了對文檔的模型化,包括了CSS, DOM, Render等的實現, JavaSript Core顯然是對JavaSript支持的實現。而橘黃色標註的Webkit部分包含了不少不一樣平臺對Webkit封裝的實現,即抽象出了與瀏覽器所能直 接對應的一些概念的實現,如,WebView,WebPage, WebFrame等。這三部分共同構成了Webkit, 在源碼中,它們分別對應這個這三個目錄, 即Webkit三大部分爲WebCore, JavaSript Core,Webkit。3d
應用程序如何利用Webkit的blog
從下圖能夠看出,利用Webkit的應用程序的位置處於Webkit模塊之上,應用程序並不直接和WebCore以及JavaScript Core來打交道,也不須要和它們打交道,而是同我前面提到過的Webkit模塊來交互,從而屏蔽了WebCore和JavaSript Core部分。Webkit模塊實際上抽象出了大多數應用程序所須要的那一部分,這裏所說的大多數應用程序其實就是指的瀏覽器, 對於實現一個瀏覽器而言,Webkit模塊所提供的接口已經足夠。不過對於某些應用,可能得對其實施必定的改造,可是話又說回來,Webkit原本就是被設計成爲Browser的內核而被實現的。接口
看到這裏,也就是說若是咱們要想利用Webkit來實現一個功能完善Browser或其餘類瀏覽器應用程序的話,你只須要了解Webkit模塊部分 就足夠了,更確切的說只須要了解它所提供的接口就夠了。事實上,大多數平臺,若是採用了Webkit內核做爲瀏覽器內核組件的話,所提供的對應文檔部分都 是關於Webkit模塊所提供的接口的描述。不少平臺都提供了Browser組件,其使用方法就像是其餘可視組件同樣,在應用程序中應用起來很是方便。比 如,某平臺提供了叫作WebView的可視化組件,咱們就能夠經過以下幾行代碼來展現一個網頁, 使用的代碼僅僅三行。ip
WebView *view = new WebView();
view->load(Url("http://www.google.cn"));
view->show();
以Webkit做爲瀏覽器組件的平臺有很多,包括Symbian S60, Android, Qt, GTK等等,前不久看到消息,好像Black Berry也準備在自家的手機上使用Webkit了。