Android瀏覽器的內核是Webkit引擎,WebKit的前身是KDE小組的KHTML。android
Apple公司推出的Safari瀏覽器,使用的內核是裝備了KHTML的WebKit引擎。web
WebKit內核在手機上應用十分普遍。瀏覽器
WebKit 是一個開源瀏覽器網頁排版引擎,相似的引擎有:ide
Gecko做爲Mozilla, Firefox的內核,佈局
Trident做爲IE的內核(也稱MSHTML)。ui
WebKit所包含的WebCore排版引擎和JSCore排版引擎來自於KDE的KHTML和KJS。ip
Apple公司選擇WebKit做爲內核是由於它擁有清晰的源碼結構、極快的渲染速度。資源
WebKit由3個模塊組成:JavaScriptCore, WebCore, WebKit。開發
1. JavaScriptCore: JavaScript解釋器。字符串
2. WebCore: 項目的核心,用來實現Render引擎。解析Web頁面,生成一個DOM樹和一個Render樹。
3. WebKit: 整個項目的名稱。
WebCore的主要功能有:
1. Page, 與外框相關的內容,包括Frame, Page, History, Focus, Window.
2. Loader, 加載資源及Cache。
3. HTML, DOM HTML 內容及解析。
4. XML, XML內容及解析。
5. DOM, DOM CORE 內容。
6. Render, 排版功能。
7. CSS, DOM CSS 內容。
8. Binding, DOM和JavaScriptCore綁定的功能。
9. Editing, 全部與編輯相關的內容。
JavaScriptCore的主要功能有:
1. API, 基本JavaScript功能。
2. Binding, 與其餘功能的綁定,如DOM, C, JNI。
3. DerviedSource, 自動產生的代碼。
4. ForwordHeads, 頭文件,無實際意義。
5. PCRE, Perl-Compatible Regular Expressions.
6. KJS, JavaScript內核。
7. WTF, KDE的C++模型庫。
WebKit的解析過程
1. CURL獲得Stream。
2. 解析拆分字符串。
3. 經過DOM Buider按合法的HTML規範生成DOM樹。
4. 若是有JavaScript, JSEngine就經過ECMA-262標準完善DOM樹。
5. 把DOM傳給LayoutEngine進行佈局,若是有CSS樣式,就經過CSSParser解析。
6. 最後Rendering渲染出來。
Google對WebKet進行了封裝,爲開發者提供了豐富的API,其中最重要的是android.webkit.WebKit控件。