八大Webkit內核瀏覽器

列舉出時下最流行的Webkit內核瀏覽器,因此咱們並不會作出評測和對比。
PS:本文列舉的瀏覽器有一部分爲IE+Webkit雙核瀏覽器,若是您對其餘IE內核瀏覽器很感興趣《拋棄數據!用體驗和感受告訴你什麼纔是最好用的瀏覽器!》一文可能會對你有所幫助。
尖端技術的Webkit內核
WebKit 是一個開源的瀏覽器引擎,與之相對應的引擎有Gecko(Mozilla Firefox 等使用)和Trident(也稱MSHTML,IE 使用)。
同時WebKit 也是蘋果Mac OS X 系統引擎框架版本的名稱,主要用於Safari,Dashboard,Mail 和其餘一些Mac OS X 程序。
WebKit 前身是 KDE 小組的 KHTML,WebKit 所包含的 WebCore 排版引擎和 JSCore 引擎來自於 KDE 的 KHTML 和 KJS,當年蘋果比較了 Gecko 和 KHTML 後,仍然選擇了後者,就由於它擁有清晰的源碼結構、極快的渲染速度。Apple將 KHTML 發揚光大,推出了裝備 KHTML 改進型 WebKit 引擎的瀏覽器 Safari。

1.Google Chrome 谷歌瀏覽器
2 億活躍用戶,全球成長最快,來自 Google 的新型瀏覽器。
Chrome谷歌瀏覽器下載:http://www.jisuxz.com/down/533.html
官方網站:http://www.google.cn/chrome

2.Safari瀏覽器
它的創新功能將改進你瀏覽網頁的方式。功能強大的新工具可以幫助開發人員提高用戶的瀏覽體驗,令其更具個性化。
Safari瀏覽器下載:http://www.jisuxz.com/down/598.html
官方網站:http://www.apple.com.cn/safari/javascript


3.搜狗高速瀏覽器
以快速做爲主打的國產雙核瀏覽器,搜狗瀏覽器作的很不錯,3.1版本也升級了Webkit內核。
搜狗高速瀏覽器下載:http://www.jisuxz.com/down/598.html
官方網站:http://ie.sogou.com/

4.傲遊瀏覽器3
搭載獨立瀏覽核心,上網速度全面提高。專爲國人習慣優化,更高效,更安全,更私密!
傲遊瀏覽器3下載:http://www.jisuxz.com/down/2077.html
官方網站:http://www.maxthon.cn/mx3/html


5.QQ瀏覽器
QQ系列的新一代雙核瀏覽器產品,更多對QQ產品的支持。
QQ瀏覽器下載:http://www.jisuxz.com/down/210.html
官方網站:http://browser.qq.com/java


6.360極速瀏覽器linux

360極速瀏覽器採用了最新的Webkit內核技術,速度更上一層樓。
360極速瀏覽器下載:http://www.jisuxz.com/down/2094.html
官方網站:http://chrome.360.cn/

7.世界之窗瀏覽器(極速版)
世界之窗瀏覽器極速版基於 Chromium 瀏覽器開源項目開發,是此開源項目的一個並行分支。鳳凰工做室將逐漸參與到 Chromium 開源項目中,這樣既能夠打造更適合國內用戶使用習慣的優秀瀏覽器,也爲互聯網發展作出本身的貢獻。
世界之窗瀏覽器(極速版)下載:http://www.jisuxz.com/down/7382.html
官方網站:http://chrome.theworld.cn/

8.阿里雲瀏覽器
阿里巴巴自主開發的阿里雲瀏覽器浮出水面。產品包括PC端和手機端瀏覽器。近來,各大互聯網巨頭都開始研發自有瀏覽器,阿里巴巴在瀏覽器的佈局,有利於鞏固阿里巴巴的用戶入口,在整個「大阿里」的內循環中起到數據保護的做用。
阿里雲瀏覽器下載:http://www.jisuxz.com/down/6930.html
官方網站:http://browser.aliyun.com/index.htmlandroid

 

儘管Webkit 內核是個很是好的網頁解析機制,可是因爲以往微軟把IE捆綁在Windows裏(一樣的Webkit內核的Safari捆綁在Apple產品裏, Chrome[1]  捆綁在Google產品裏),致使許多網站都是按照IE來架設的,不少網站不兼容Webkit內核,好比 登陸界面、網銀等網頁均不可以使用Webkit內核的 瀏覽器
WebKit 內核在手機上的應用也十分普遍,例如 Google 的手機 Android、 Apple 的 iPhone, Nokia’s Series 60 browser 等所使用的 Browser 內核引擎,都是基於 WebKit。
WebKit 是一個開源項目,其起源可追溯到 K Desktop Environment (KDE)。WebKit 項目催生了面向移動設備的現代 Web 應用程序。雖然設備自己的能力和形態因素都至關重要,但移動用戶最熱衷的仍然是內容。若是移動用戶可用的內容只是 Internet 用戶可用內容的一個很小的子集,那麼用戶體驗充其量也只能劃分爲二等。
WebKit 還應用在了桌面的 Safari 瀏覽器內,該瀏覽器是 Mac OS X 平臺默認的瀏覽器。無論咱們討論的是桌面版本仍是 iPhone 或 Android 上的瀏覽器引擎,WebKit 均優先支持 HTML 和 CSS 特性。實際上,WebKit 還支持還沒有被其餘瀏覽器採納的一些 CSS 樣式 — 這些特性正在獲得 HTML5 規範的考慮。
HTML5 規範是一個技術草案集,涵蓋了各類基於瀏覽器的技術,它包括客戶端 SQL 存儲、轉變、轉型、轉換等。HTML5 的出現已經有些時間了,雖然還沒有完成,但一旦其特性集因主要瀏覽器平臺支持的加入而逐漸穩定後,Web 應用程序的簡陋開端也將成爲永久的記憶。Web 應用程序開發將成爲主導 — 而且不僅是在傳統的桌面瀏覽器空間,還將在移動領域。移動將一躍成爲首要考慮,而再也不是後備之選。
iOS:
2007年6月29日,iPhone上市,WebKit進入iPhone OS平臺,並且當即成爲iPhone OS平臺獨一無二的 排版引擎
Android:
Google 開發的 手機操做系統Android中內置的 瀏覽器也是採用的WebKit引擎。
Nokia S60:
諾基亞公司將WebKit移植到Symbian S60 操做系統中,並開發了基於Webkit的手機 瀏覽器「Web browser for S60」,普遍用於諾基亞、三星、LG等基於Symbian S60操做系統的手機中。
Web OS:
Palm 推出第一款基於WebKit的 操做系統,Palm Pre是第一款基於該系統的手機產品。
Linux:
儘管WebKit的原型K內核是由Qt寫成,但Linux下目前最受矚目的WebKit項目倒是Gnome領導的WebKit/Gtk+。隨着奇趣科技於2008年6月被Nokia收購,Qt方面也加快了WebKit的「迴歸」進程。
Midori,Google Chrome,GNOME的Epiphany、KDE的Konqueror, 瀏覽器
Windows:
Webkit內核在Windows上發展最晚,Safari(for Windows),Midori,Google chrome,具備雙核模式的傲遊3和傲遊雲瀏覽器是最爲常見的Webkit瀏覽器。2009年推出的 safari和Chrome以及2010年推出的 搜狗瀏覽器V2.0Beta和傲遊3.0beta都使用的webkit引擎徹底經過了 acid3測試滿分!
瀏覽器的內核引擎,基本上是四分天下:
Trident: IE 以Trident 做爲內核引擎;
Gecko: Firefox 是基於 Gecko 開發;
WebKit: Safari, Google Chrome,傲遊3,獵豹瀏覽器,百度瀏覽器 opera瀏覽器 基於 Webkit 開發。
Presto: Opera的內核,但因爲市場選擇問題,主要應用在手機平臺--Opera mini
注:2013年2月Opera宣佈轉向WebKit引擎
注:2013年4月Opera宣佈放棄WEBKIT,跟隨GOOGLE的新開發的 blink引擎
爲何搞WebKit
如今研究WebKit的人愈來愈多,俺不能免俗,也加入其中。WebKit的火爆也是得益於瀏覽器和WebOS的混戰,隨着Palm WebOS, Chrome OS, Firefox OS和Ubuntu Mobile相繼發佈,WebOS逐漸成爲Android和IOS以外的第三世界,而WebKit也隨之從瀏覽器內核晉升爲Mobile OS的內核,除了IE和Firefox以外,市面上叫得上名字的都是基於WebKit發展起來,Chrome, Safari, Opera, 360......。所以,不管你是從事瀏覽器仍是Mobile的開發,WebKit都是不二的選擇。而我目前是由於須要在WebOS上提供一個相似與Chrome for android那樣能夠遠程debug的功能,而接觸到WebKit,隨着不斷深刻,也逐漸步入WebKit的開發正軌,也是想把最近的學習歷程記錄下來,也是幫助其餘朋友進這個大門,WebKit的資料實在很少。

如何起步
我就假定你和我同樣,從沒接觸過WebKit,沒寫過c/c++,被Java/PHP等傻瓜式語言慣壞了,對設備底層技術不甚瞭解,在這種狀況下(不可能比這個更糟了),也是能夠在一週左右入這個門檻的。正式開工以前先準備如下幾步:
學習文章:http://paulirish.com/2013/webkit-for-developers/,固然也有中文版本:http://www.infoq.com/cn/articles/webkit-for-developers,弄清楚WebKit的幾個概念
準備一臺CPU和硬盤較好的電腦,CPU是爲了應付編譯,硬盤是爲了應付大規模代碼的訪問(去年7月份買的mac已不夠用,特意爲此換了SSD)
開發平臺最好是Xcode,Visual Studio也行,不過可能會遇到不少坎、
準備一本C++ Primmer Plus放在手邊,研究WebKit同時順便把C++也給攻克了
給予足夠的耐心,應付漫長的源碼下載和編譯
好了,就這麼多,能夠開工了。關於如何編譯和調試等問題,我會在後續文章中詳細介紹。
開工以前的掃盲
WebKit port
WebKit已發展爲相似與Linux這樣平臺性的框架,已不是單一產品類型的開源項目。它是一個標準和變異的結合體。下面這張圖能很好說明這點:

WebKit提供了像這張圖這樣的標準架構和WebCore這樣的核心庫,但灰色的其餘部分都是要根據各自平臺的不一樣而進行替換和移植,也就是談及不少的port,這裏談的平臺就是各自設備的運行環境,好比mac os x,Android和IOS,所以雖然咱是用WebKit,但能夠作的事情還有不少,WebKit只是提供了流程和框架,裏面有不少洞須要咱本身去填補的。好比,我如今作的遠程調試功能,在WebKit裏面已在流程上支持,但具體實現上是須要port的,也就致使了只有chrome for android和safari for IOS支持遠程調試。開頭介紹的文章中已羅列出哪些點是標準已實現的,哪些點是差別化的,從這裏面大概就能預計到須要作哪些東西。
學習平臺的選擇
官方的WebKit是以Safari for Mac OSX爲基礎的,Chromium雖然也是基於WebKit,但基本上已經是另一套,還有QT和GTK平臺,有不少瀏覽器,好比Opera和360都選擇了基於Chromium,那對於咱們這些初學者來講該如何選擇學習的起點呢?個人感受是,標準的WebKit門檻低一點,文檔要豐富一些,但做爲未來工程的方向,Chromium更受歡迎一些,因此,我推薦以官方的WebKit爲起點,而後再延伸到Chromium。後面我會談開發環境的搭建,基於官方的WebKit,再加上XCode,會感受手上很順滑,不至於像大多數大型開源項目那樣在最開始就把你拒之門外。
開始動手
下面我介紹動手的幾個步驟,能夠在你無需瞭解細節的狀況下,把環境搭起來,大多數包括我本身,都仍是習慣於代碼和環境搭建好狀況下,比較有心情和底氣去往下深刻,因此耐心地完成下面幾步,你就能夠在開發環境中啓動WebKit,這裏我介紹的是Mac下的狀況,但在windows和linux會困難一些,起碼我是受阻後就放棄了:
升級Mac OSX和Xcode至最新版本,個人是Mountain Lion 10.8.3和Xcode 4.6。作這個是由於個人一個哥們用的是lion,用的同樣的步驟,但啓動後一直報內存訪問錯誤,升級系統至最新後就解決了。固然,別忘記了xcode command line
取得最新代碼:svn checkout https://svn.webkit.org/repository/webkit/trunk 固然,這個過程是須要耐心的,特別是下載layout test時,爲了未來的一馬平川,忍忍吧
Xcode的菜單File->Workspace Settings->Build->Derived Data Location一欄選擇Workspace-relative,並輸入WebKitBuild->Done
Xcode的菜單Product->Scheme->Edit Scheme->選擇scheme: All Source(target WebProcess), Exceutable選擇WebProcess.app
若是你是下載的是最新代碼,環境搭建僅僅只須要以上幾步,當你點擊Run後,就能夠開始順利編譯,最後會彈出Safari,實際上它的run的是webkit內核,須要一個Safari來做UI層。WebKit也提供了一個MiniBrowser,這就和Safari不要緊了,啓動方法就是在第四步上的Exceutable選擇MiniBrowser.app便可。我當初基於的代碼會有些其餘的問題,這裏就不干擾你們了,若是有遇雷的請把錯誤貼出來,我看看遇到過沒。

OK,瞭解基本概念,搭建好了開發和調試環境,我敢相信任何級別菜鳥,都會有信心往下繼續深究了。個人理念就是這樣,無論後面有多難,千萬不要把開頭搞得太複雜,這樣會拒不少人之門外,這也是我爲何推薦最開始用xcode的緣由,WebKit官方已把編譯中全部細節都隱藏在xcode的項目設置和腳本中了。後面,我會基於源碼,逐步深刻,和你們一塊兒探究WebKit內核的神奇和偉大。

  

WebKit最神奇的一點是JS能調到內核部分(c/c++),這是WebOS向外提供擴展能力的關鍵(實現或擴展W3C API)。要搞清楚一個JS的方法是如何調到後面c/c++的實現頗費周折,其實就是要把IDL和Bindings弄懂,先解釋一下這兩個名詞:c++

 

我這麼解釋估計仍是一頭霧水,那就看看WebKit爲啥須要這兩個概念。首先咱們得明白WebKit的世界裏只有DOM和DOM相關的行爲,它不認識Script,例如:web

 

document.getElementById('domId')chrome

WebKit知道document,也知道getElementById該作什麼事兒,但它不認識getElementById這個函數,不具有script解析和執行的能力,所以它須要第三方的解析器來幫助,這也就是JavascriptCore(JSCore)或V8須要乾的事兒。但JavascriptCore或V8很薄,能解析和執行javascript語言自己,不知道getElementById的具體實現,因此須要WebKit把具體實現注入進來,好了,說到這裏你們就大概明白爲啥須要IDL和Bindings了,其實就是爲了提供一個標準的方式(IDL),讓WebKit把JS API背後的實現注入給javascript解析器,另外,各個解析器的具體註冊和執行機制是不一樣的,因此須要有Bindings來動態生成與各個解析器結合的部分,這樣同一套標準的WebKit就能與各類解析器整合了。說了半天,看個圖就清楚了:windows

其中,V8/JSCore Bindings中包含的是基於IDL規範爲各個JS實現動態生成的產物,這些產物是會註冊到各個DOM上,並能被V8/JSCore識別,因此以v8上的document.getElementById爲例,調用流程以下:xcode

 

  1. 編譯的時候,基於Document.idl爲Document.cpp和Document.h動態生成V8Document.cpp和V8Document.h(後面會講到動態生成這部分邏輯)
  2. V8Document.cpp和V8Document.h其實就是包含兩樣東西,一是對Document.cpp和Document.h各個方法的代理,二是js API和各個實現方法的對照表
  3. WebKit把V8Document中對照表註冊到document這個dom中
  4. WebKit中執行腳本document.getElementById
  5. WebKit按照最新的document的dom結構初始化V8的context
  6. V8解析和執行document.getElementById
  7. V8根據對照表執行getElementById方法對應的V8Document.cpp中的實現
  8. V8Document.cpp代理Document.cpp相應的實現

對於JSCore,流程和原理相同,只是具體的實現細節不一樣,而這個不一樣就是在bindings和JSCore中來體現,對於WebKit自己是徹底相同的,一樣的Document.cpp和Document.h標準實現能適配到不一樣的解析器上去解析和執行,這就是IDL和Bindings的精妙之處,讓WebKit既能單一又能海納百川。

 

以上流程中的關鍵有兩點,一是動態生成bindings這塊,另外是如何註冊和執行bindings,後面這一點因爲c/c++功力有限,沒徹底看懂,留到後面再仔細琢磨,前面這一點是WebKit強大的編譯體系中的一部分,下面詳細解釋一下。

先抽出各個不一樣編譯平臺的差別點,WebKit就是經過WebCore/bindings/scripts/中的generate-bindings.pl perl腳本生成bindings中的代碼,它在Android平臺上會被Android.derived.v8bindings.mk調用到,在mac上被DerivedSources.make調用到,其大致流程是很是清晰的:

 

  1. 解析IDL
  2. 調用各個平臺相應的CodeGenerate腳本
  3. 生成最終bindings代碼

見下圖所示:

 

具體的實現邏輯就看看各個腳本源碼,這裏就很少說了。另外,對於腳本的註冊和執行那塊能夠看看bindings下的ScriptController.cpp,固然,如何想看V8/JSCore中是如何調用對照表中的代碼,就須要再看看V8/JSCore自己的源碼,V8就看execution.cc,JSCore就看JITCode.h。

綜上所述,WebKit利用IDL和Bindings把本身從JS語言自己中脫離,讓本身既能夠不需瞭解JS語言,又能實現JS API背後的邏輯,妙哉!

相關文章
相關標籤/搜索