整理:徐建祥(netpirate@gmail.com)
日期:2009/09/09
網(wǎng)址:http://www.anymobile.org
市面上主流的瀏覽器:
a. IE,內(nèi)核Trident;
b. FireFox,內(nèi)核:Gecko;
c. Safari, Google Chrome,內(nèi)核:Webkit;
d. Opera,內(nèi)核 Presto。
Webkit Architecture
Android Browser 主要分成三個部分:
1. Webkit Engine (C++):JavascriptCore,WebCore,Webkit;
2. Framework WebView (Java);
3. Browser app (java).
1. JavaScriptCore;
Javascript 引擎
KJS進化到Squirrel Fish
基本的模板庫WTF
基本的正則表達式解析模塊PCRE
基本編碼轉(zhuǎn)換模塊,依賴ICU進行
JS解析/編譯引擎
JS運行庫
2. WebCore----render engine;
解析頁面,生成DOM tree 和 render tree,最終render整個頁面到background。
網(wǎng)絡(luò)接口封裝
HTML解析引擎
XML解析引擎
CSS解析引擎
JS 客戶端對象封裝
網(wǎng)頁渲染引擎
BackEnd封裝與實現(xiàn)
SVG
HTML Editing
Plugins
網(wǎng)頁內(nèi)容處理,Image/Icon
。。。
3. Webkit-------和平臺相關(guān)的background實現(xiàn);
里面包括了android 平臺的實現(xiàn),具體是通過JNI和framework 里面的webview。
WebCore的高層封裝
提供與BackEnd一直的平臺支撐
提供給WebCore用戶操控相關(guān)的支撐接口
source analysis:
1. bindings ---將javaScript 中對象和DOM對象進行綁定,比如window對象和document對象
2. bridge ----將javascript對象和自定義的對象綁定
3. css -------實現(xiàn)了css 2.0 的標(biāo)準(zhǔn)
4. dom-------DOM樹的相關(guān)對象
5. editing-------所有于Edit相關(guān)功能,比如html中的編輯框
6. html -------html 語言的解析
7. loader ------- 加載網(wǎng)頁資源以及Cache,F(xiàn)rameLoader ImageLoader
8. platform----- 和平臺有關(guān)的,比如 圖像decoder,圖形的繪制,網(wǎng)絡(luò)操作,字體等
9. plugin------實現(xiàn)了基于Netscape的 NPAPI (Netscape Plugin Application Programming Interface ) 的框架
10. rendering--------- render tree 相關(guān)對象
11. resource ------PC 瀏覽器safair 用到的資源,對于android來說沒用
12. svg ---------- svg 語言的解析
13. wml----------- wml 語言的解析
14. xml------------xml 語言的解析以及XSLT 轉(zhuǎn)換,需要libxslt
軟件應(yīng)用
Browsers
-Safari
-Google Chrome/Chromium
-OmniWeb
-Osb-browser – Nokia
-Web Browser for S60 – Nokia
-QT Browser Engine
E-mail Clients:使用Webkit 作Web 內(nèi)容處理
-Entourage 2008 – Microsoft (for Mac)
-Mail-Apple
-Mailplane 特定的Gmail終端
Instant Messenger/Chat Clients:使用Webkit對消息進行渲染和樣式化
-iChat AV – Apple
-MSN Messenger – Microsoft (Mac)
-Yahoo! Messenger
RSS Readers:使用Webkit來處理和現(xiàn)實新聞?wù)约癋eed連接到的完整文檔
-MiNews
-NetNewsWire
-NewsFire
-PixelNews