什麼Webkit?

提起WebKit,大家自然而然地想到瀏覽器。作爲瀏覽器內部的主要構件,WebKit的主要工作是渲染。給定一個HTML文件,WebKit的工作是 HTML 格式的內容繪製出來,包括, a. HTML 的佈局,譬如左邊是什麼,頂部是什麼,中間是什麼。 b. 根據用戶設定,呈現文字,譬如字體是宋體還是楷書,大小尺寸,重體斜體等等。 c. 顯示不同格式的圖片,譬如 JPG GIF PNG 等等。所以, WebKit是一個渲染機(Rendering Engine )。

瀏覽器與用戶的交互,主要通過
JavaScript 程序控制 譬如用戶在瀏覽器界面上移動鼠標,有些圖標會放大或縮小,顏色會變化等等。 嚴格說來,JavaScript Engine不屬於WebKit,但是WebKit自帶了一個JavaScript Engine,SquirrelFish。不過在WebKit框架下,可以把SquirrelFish Java Engine替換成其它版本,而不影響WebKit整體工作。譬如,Google的Chrome瀏覽器,內部使用的渲染機是WebKit,但是 Google沒有用SquirrelFish,而是自己另起爐竈開發了一套JavaScript Engine,取名V8。V8的來歷不清楚,或許是因爲Google的工程師喝多了V8果蔬飲料,所以就取了這麼個名字。就如同Sun Microsystems的工程師喝多了咖啡,於是把他們發明的新語言定名爲Java一樣。

說起渲染機(Rendering Machine ),微軟的 IE 瀏覽器用的 Rendering Engine ,名曰三叉戟( Trident Firefox 用的 Rendering Engine ,叫 Gecko 。而 Apple Safari ,以及 Google Chrome ,用的 Rendering Engine 都是 WebKit

雖然 IE瀏覽器 佔據大部分市場份額,但是似乎談論 Trident 的文章不是很多。而 Firefox使用的Gecko,它 的特點是小,有點像 OS 的微內核一樣,擴展性很好。 最近幾年,談論 WebKit 的文章很多,甚至有人斷言, WebKit是當今最好的Rendering Engine。WebKit之所以大熱, 估計與以下幾個因素有關。

1. WebKit
的前身是由開源的 Linux 項目組 KDE 設計開發的 KHTML ,後來 Apple 覺得這個產品不僅開源,而且架構設計簡潔高效,所以就參與開 發。再後來,在產品未來開發計劃上, Apple KDE 產生分歧,於是各幹各的, Apple 把產品名字改爲 WebKit

2.
基於 WebKit Apple 公司於 2003 年推出 MacOS 平臺的瀏覽器, Safari

3. 2005
年, WebKit 源代碼向公衆開放。

4.
同年, Nokia 推出 S60 平臺的手機瀏覽器,其內部 Rendering Engine ,也是 WebKit

5.
同年, KDE 宣佈放棄 KHTML ,改用 WebKit

6. 2007
年, Apple 推出手機 iPhone ,引起轟動。 iPhone 自帶的手機瀏覽器,也使用了 WebKit iPhone 的瀏覽器,縮放自如,引人注目。

7. 2008
年, Google 推出瀏覽器 Chrome ,其內部 Rendering Engine ,也是 WebKit

需要指出的是, Rendering Engine 的用途,並不限於瀏覽器,而是可以充當通用的 UI 實現平臺。譬如,微軟的電子郵件軟件 Outlook ,雖然不是瀏覽器,但是其界面渲染,使用了 微軟的Rendering Engine,Trident 。甚至微軟的 Office 系列軟件,也使用了 Trident

爲什麼要用Rendering Engine來處理渲染,而不是用Java Swing那樣的UI工具?估計有兩個原因。

1. 方便開發,吸引更多開發者。

Java Swing固然不難用,但是廣大開發者更熟悉HTML+CSS+JavaScript。哪個手機能吸引更多開發者,它就能獲得更多更好的應用程序。哪個手機能擁有更多更好的應用程序,它的市場前景就更廣闊。使用C/C++語言的開發者人數,不如Java的多。Java的用戶,不如HTML+CSS+JavaScript的多。Palm WebOS之所以把GUI的管理基於WebKit基礎之上,估計主要的目的是吸引廣大Web開發者,這些人最熟悉的工具就是 HTML+CSS+JavaScript。

目前非常流行的Web開發工具,Ruby on Rails的締造者,David H. Hansson,於2007年6月發表過一篇博客,題爲“我就是喜歡HTML+CSS+JavaScript,咋了?”(http://ajax.sys-con.com/node/395424)。文中表達了這麼一個觀點,以 HTML+CSS+JavaScript爲代表的Web技術源於實踐,它們已經發展和經受了10多年的考驗。現在大家要做的,不是去追求無必要的所謂完美,而是用好HTML+CSS+JavaScript,把它們的潛力充分挖掘出來。

或許David H. Hansson的觀點有點偏激,但是不可否認的是,他的觀點有很多擁護者。基於WebKit之上的GUI系統設計,Palm WebOS是不是有意迎合Web開發者?

2. 工作流程的柔性組織。

複雜一點的應用程序,通常由多個頁面組成,頁面與頁面之間的銜接,稱爲工作流程。應用程序的更新,不僅涉及每個頁面的內容的更改,而且也涉及工作流程的變更。

WebKit 這樣的Rendering Engine,不僅提供了單個頁面的渲染,而且也提供了歷史頁面的緩存,支持後退(Back),前進(Forward)以及歷史(History)等等功能。同時,WebKit能夠記憶用戶對於每個頁面做過哪些修改,甚至提供恢復(Undo)功能。

新時代新潮流WebOS <wbr>【10】爲什麼需要Webkit?

Figure 2. WebKit Rendering effect
Courtesy http://www.atoker.com/blog/wp-content/uploads/2008/06/ubrowser-webkit.jpg

單個頁面的渲染,多個頁面銜接而成的柔性工作流程組織,GUI管理系統都需要提供支持。與其重新開發程序,不如利用現成的WebKit工具庫。如果有人問,WebKit與Palm WebOS的GUI管理系統,尤其是Window Server和Window Manager兩個模塊,是什麼關係?或許可以這麼猜測,Palm WebOS在實現Window Server和Window Manager兩個模塊時,調用了WebKit相關APIs。也就是說,Palm WebOS把WebKit拆散了,作爲工具庫使用。

WebKit的確有很多優勢,但是並不完美。尤其是,能不能把WebKit原封不動地照搬到手機上來,作爲手機GUI渲染和控制的基石,這個問題比較複雜

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章