各种主流浏览器内核引擎的对比分析
要搞清楚瀏覽器內核是什么,首先應該先搞清楚瀏覽器的構成。簡單來說瀏覽器可以分為 兩部分,shell+內核。其中shell的種類相對比較多,內核則比較少。Shell是指瀏覽器的外殼:例如菜單,工具欄等。主要是提供給用戶界面操 作,參數設置等等。它是調用內核來實現各種功能的。內核才是瀏覽器的核心。內核是基于標記語言顯示內容的程序或模塊。也有一些瀏覽器并不區(qū)分外殼和內核。 從Mozilla將Gecko獨立出來后,才有了外殼和內核的明確劃分。目前主流的瀏覽器有IE6、IE8、Mozilla、FireFox、 Opera、Safari、Chrome、Netscape等。
什么是瀏覽器內核
瀏覽器內核又可以分成兩部分:渲染引擎(layout engineer或者Rendering Engine)和JS引擎。它負責取得網頁的內容(HTML、XML、圖像等等)、整理訊息(例如加入CSS等),以及計算網頁的顯示方式,然后會輸出至 顯示器或打印機。瀏覽器的內核的不同對于網頁的語法解釋會有不同,所以渲染的效果也不相同。所有網頁瀏覽器、電子郵件客戶端以及其它需要編輯、顯示網絡內 容的應用程序都需要內核。(參見維基百科)JS引擎則是解析Javascript語言,執(zhí)行javascript語言來實現網頁的動態(tài)效果。最開始渲染引 擎和JS引擎并沒有區(qū)分的很明確,后來JS引擎越來越獨立,內核就傾向于只指渲染引擎。有一個網頁標準計劃小組制作了一個ACID來測試引擎的兼容性和性 能。內核的種類很多,如加上沒什么人使用的非商業(yè)的免費內核,可能會有10多種,但是常見的瀏覽器內核可以分這四種:Trident、Gecko、 Presto、Webkit。
Trident又稱MSHTML,是微軟開發(fā)的渲染引擎(包含了Javascript引擎JScript),他已經深入了Windows操作系統(tǒng)的 骨髓,例如Windows Media Play,Windows Explorer,Outlook Express等都使用了。目前很多瀏覽器都使用這個引擎,例如IE,Maxthon(最新版已經不使用)等。
Gecko是C++開發(fā)的,Open Source的渲染引擎,包括了SpiderMonkey(Rhino)。主要的使用者有Firefox。
Webkit是蘋果公司基于KHTML開發(fā)的。他包括Webcore和JavaScriptCore(SquirrelFish,V8)兩個引擎。主要的使用者有Safari,Chrome。
Presto由Opera Software公司開始的,用于Opera的渲染引擎。Macromedia Dreamweaver (MX版本及以上)和Adobe Creative Suite 2也使用了Presto的內核。
主流瀏覽器所使用的內核分類
Trident內核:IE,MaxThon,TT,The World,360,搜狗瀏覽器等
Gecko內核:Netscape6及以上版本,FF,MozillaSuite/SeaMonkey等
Presto內核:Opera7及以上
Webkit內核:Safari,Chrome等
| Engine | Creator | Software license | Leading application |
| Gecko | Netscape/Mozilla Foundation | MPL/GNU GPL/GNU LGPL tri-license | Mozilla Firefox |
| KHTML | KDE | GNU LGPL | Konqueror |
| Presto | Opera Software | Proprietary | Opera |
| Tasman | Microsoft | Proprietary | Microsoft Entourage |
| Trident | Microsoft | Proprietary | Internet Explorer |
| WebKit (Based on KHTML) | WebKit Foundation | GNU LGPL, BSD-style | Safari, Google Chrome |
JS引擎
JavaScript最初由網景公司的Brendan Eich設計,是一種動態(tài)、弱類型、基于原型的語言,內置支持類。以它為基礎,制定了ECMAScript標 準。他的起源并不是如《Javascript高級程序設計》書中所述,是Brendan Eich自主發(fā)明的。(參考aimingoo的考證文章)JavaScript在瀏覽器的實現中還必須含有DOM和BOM。Web瀏覽器一般使用公共 API來創(chuàng)建主機對象來負責將DOM對象反射進JavaScript。
| ? | Trident | Gecko | WebKit | KHTML | Presto | |
| Name of ECMAScript Engine | JScript | Spidermonkey | JavaScriptCore | KJS | linear b/futhark | |
| ECMAScript Version | Edition 3 | Yes | 0.6 | Yes | Yes | 7.0 |
| JavaScript 1.5 extensions | No | 0.6 | Yes | Yes | 7.0 | |
| JavaScript 1.7 extensions | No | 1.8.1 | No | No | No | |
| JavaScript 1.8 extensions | No | 1.9 | No | No | No | |
瀏覽器內核實現原理
渲染流程如下所示:
Mozilla架構設計:界面和實現分離。采用標記語言,JavaScript,C++來開發(fā)。JSEngine就是指SpideMonkey,Layout就是指Gecko。Mozilla的一個關鍵部分是XPCOM和NSPR。
Webkit的處理流程:
瀏覽器內核的優(yōu)缺點
Trident:這種瀏覽器內核是IE瀏覽器用的內核,因為在早期IE 占有大量的市場份額,所以這種內核比較流行,以前有很多網頁也是根據這個內核的標準來編寫的,但是實際上這個內核對真正的網頁標準支持不是很好,甚至在 2005年,與網頁標準制定組織(W3C理事會)所制定的標準發(fā)生了脫節(jié),同時 Trident 內核本身的BUG比較多,對一些符合W3C標準的網頁代碼支持不是很好,這在早期的IE版本中比較明顯,比如IE5.5以前(包括IE5.5),其實 IE6對W3C標準的支持也不是很好,而我們現在很多人都在使用IE6,事實上它也屬于一個比較早的版本。
但是由于IE的高市場占有率,微軟也很長時間沒有更新Trident內核,這導致了二個結果
1,Trident內核和W3C標準脫節(jié)。
2,Trident內核的大量Bug等安全問題沒有得到解決,加上一些專家學者公開自己認為IE瀏覽器不安全的觀點,使很多用戶開始轉向其他瀏覽器,FF,Opera就是這時期興起的。
Gecko:這是Firefox 和 Flock 所采用內核,這個內核的優(yōu)點就是功能強大、豐富,可以支持很多復雜網頁效果和瀏覽器擴展接口,但是代價是也顯而易見就是要消耗很多的資源,比如內存。
Presto:Opera 采用的是 Presto內核,Presto內核被稱為公認的瀏覽網頁速度最快的內核,這得益于它在開發(fā)時的天生優(yōu)勢,在處理JS腳本等腳本語言時,會比其他的內核快3倍左右,缺點就是為了達到很快的速度而丟掉了一部分網頁兼容性。
Webkit:Webkit 是 Safari 采用的內核,不過 Safari 是蘋果系統(tǒng)下的瀏覽器(雖然也有windows版,但是比較少),所以只簡單介紹一下這個內核的優(yōu)點和缺點,優(yōu)點就是網頁瀏覽速度較快,雖然不及 Presto 但是也勝于 Gecko 和 Trident,缺點是對于網頁代碼的容錯性不高,也就是說對網頁代碼的兼容性較低,會使一些編寫不標準的網頁無法正確顯示。
總結:就瀏覽器來說,互聯網經歷了十年的高速發(fā)展期,近幾年市場上也推出了很多新的瀏覽器,但是他們并非是采用自主開發(fā)的內核,所以瀏覽器內核本身實際沒有實質突破。
在CSS3中,各個瀏覽器的私有屬性前綴:
-moz代表firefox瀏覽器私有屬性 -ms代表IE瀏覽器私有屬性 -webkit代表chrome、safari私有屬性 -o-表示opera轉載于:https://www.cnblogs.com/wangjunqiao/p/5212561.html
總結
以上是生活随笔為你收集整理的各种主流浏览器内核引擎的对比分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: github网站下载方法
- 下一篇: 怎样创建和提交谷歌站点地图?