http://blog.csdn.net/spacetiller/article/details/5784461css
一 . WebKit 簡介html
Webkit 是一個開放源代碼的瀏覽器引擎 (web browser engine) ,最初的代碼來自 KDE 的 KHTML 和 KJS( 均開放源代碼 ) 。蘋果公司在 Webkit 的基礎上作了大量優化改進工做 ,此時的 Apple Webkit 已經和 Webkit 有了很多差異,最後開發出了著名的 Safari ,能夠說 Safari 是一個至關成功的產品,可是 Safari 卻不是開放源代碼的。前端
基於 WebKit 的瀏覽器產品有:蘋果的 Safari 和 iPhone , Google 的 Chrome 和 Android , Nokia 的 S60 ,傲遊 3(Maxthon3) ;python
WebKit 目前支持 HTML4/5 , CSS1/2 , DOM1/2 , HTTP/FILE , GIF/JPEG/PNG , XML , SVG, RSS2.0 等;web
同類的瀏覽器引擎有: Trident ( IE 內核), Gechko ( Netscape, Mozilla 和 Firefox 內核), Presto ( Opera 內核,難免費), Tasman ( IE for MAC 內核),等等,而 WebKit 由於其功能強大、速度快並且免費備受歡迎。數據庫
二 . 用到的庫:
除了平臺相關的庫, WebKit 須要用到的一些主要的後臺庫有:xcode
ICU : International Components for Unicode , 一個成熟,普遍使用的一套爲 C / C + + 和 Java庫提供 Unicode 的 全球化支持軟件;瀏覽器
XSLT : eXtensible Stylesheet Language Transformation, W3C 定義的用於 XML 文檔轉換的規範;websocket
Curl : 一個利用 URL 語法的命令行數據傳輸工具,基於 libcurl 。網絡
Sqlite : SQLite 是實現了 SQL92 標準的 SQL 數據庫引擎,它能在一個庫裏組合數據庫引擎和接口 , 將全部數據存儲於單個文件 ;
Gperf :一個很完美的哈希函數生成器;
Flex : Fast Lex, 快速詞法分析生成器;
Bison :語法分析生成器,能夠將一段帶註釋的上下文無關語法轉化成 LALR 或 GLR 語法;
Enchant :一個拼寫檢查庫,提供單詞的拼寫檢查、糾錯等功能;
三 . 代碼目錄結構
WebKitTools
一些測試 WebKit 實現功能的程序;
WebKitLibraries
WebKit 用到的庫以及系統調用接口定義;
WebKitExamplePlugins
一些來自 Netscape 的插件,好比輸入法、動畫和 Cocoa 環境等;
WebKitSite: 保存了 www.webkit.org 網站的
WebKit
此目錄位於 WebKit 的最上層,定義了與應用相關的一些接口,所以它是平臺相關的,每一個子目錄都是對應平臺的完整實現:
cf : Core Foundation, MAC OS X 上的系統級 C 語言 API 接口;
win : Windows ;
mac : MAC OS X ;
qt : Q Toolkit ,其公司已被 Nokia 收購;
gtk : Gimp Toolkit ;
scripts :一些腳本,目前只有一個關於 WebKit 版本的腳本程序;
chromium : Google Chrome 開發平臺;
wx : wxWindows ,一種可移植的 C++ 和 Python GUI 工具箱, by Julian Smart ;
haiku :一種開源 OS ,從 BeOS 而來, 2001 開始, 2009 發佈首版;
efl: Enlightenment Foundation Libraries, Enlightenment 平臺;
WebCore
WebKit 的核心部分,定義了瀏覽相關的數據 IO 、頁面加載、腳本分析、 UI 組織、事件處理、網絡分析、平臺相關的具體實現等內容。
JavaScriptGlue
JavaScriptCore :有關 JavaScript 的相關內容,包括了腳本解釋器、分析器以及執行程序;
PlanetWebkit: 一個比較靈活的 RSS 閱讀器; Webkit 網站上的 Planet :一站式的 Webkit 開發與動態信息;
四 . 體系結構
WebKit 主要包括三部分: WebKit , WebCore ,以及 JavaScriptCore ,加上所使用的庫,依託的平臺,其基本的體系結構 (Architecture) 以下所示:
注意有的模塊相對於下面的模塊有突出,這是由於此模塊與下面幾個模塊直接相關,好比 WebCore 模塊就與JavaScriptCore 、 Libraries 和 Platforms 模塊直接相關。