瀏覽器與新技術

常見的瀏覽器內核有哪些?

瀏覽器/RunTime 內核(渲染引擎) JavaScript 引擎
Chrome Blink/Webkit V8
FireFox Gecko SpiderMonkey
Safari Webkit JavaScriptCore
Edge EdgeHTML Chakra(for JavaScript)
IE Trident Chakra(for JScript)
PhantomJS Webkit JavaScriptCore
Node.js - V8

內核分類

Trident

說起Trident,大部分人都會覺得比較陌生,但提起IE瀏覽器基本上是家喻戶曉。由于該內核被包含在全世界最高的使用率的操作系統中,即為Windows操作系統,所以我們又經常把它稱之為IE內核。采用用Trident內核的瀏覽器有:IE、傲游、世界之窗瀏覽器、Avant、騰訊TT、Sleipnir、GOSURF、GreenBrowser和KKman等。

Trident(又叫MSHTML),是微軟開發的一種排版引擎。1997年IE4誕生時一同出現,之后被不斷地更新和完善。它實際上是一款開放的內核,由于其引擎被設計成一個軟件模塊,所以其他的軟件開發人員就能夠在他們開發的應用程序中加入網頁的瀏覽功能?,F在的Trident內核接口已經很成熟了,所以有許多采用IE內核的產品。但是IE內核無法在windows操作系統之外的其他操作系統上使用,所以不能跨平臺使用。 [1]

該內核程序在1997年的IE4中首次被采用,是微軟在Mosaic代碼的基礎之上修改而來的,并沿用到IE11,也被普遍稱作”IE內核”。Trident實際上是一款開放的內核,其接口內核設計的相當成熟,因此才有許多采用IE內核而非IE的瀏覽器(殼瀏覽器)涌現。

由于IE本身的“壟斷性”(雖然名義上IE并非壟斷,但實際上,特別是從Windows 95年代一直到XP初期,就市場占有率來說IE的確借助Windows的東風處于“壟斷”的地位)而使得Trident內核的長期一家獨大,微軟很長時間都并沒有更新Trident內核,這導致了兩個后果——一是Trident內核曾經幾乎與W3C標準脫節(2005年),二是Trident內核的大量Bug等安全性問題沒有得到及時解決,然后加上一些致力于開源的開發者和一些學者們公開自己認為IE瀏覽器不安全的觀點,也有很多用戶轉向了其他瀏覽器,Firefox和Opera就是這個時候興起的。非Trident內核瀏覽器的市場占有率大幅提高也致使許多網頁開發人員開始注意網頁標準和非IE瀏覽器的瀏覽效果問題。

補充:IE從版本11開始,初步支持WebGL技術。IE8的JavaScript引擎是Jscript,IE9開始用Chakra,這兩個版本區別很大,Chakra無論是速度和標準化方面都很出色。

Trident內核的常見瀏覽器有: IE6、IE7IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0);360安全瀏覽器(1.0-5.0為Trident,6.0為Trident+Webkit,7.0為Trident+Blink)獵豹極輕瀏覽器,360極速瀏覽器(7.5之前為Trident+Webkit,7.5為Trident+Blink)獵豹安全瀏覽器(1.0-4.2版本為Trident+Webkit,4.3及以后版本為Trident+Blink)獵豹極輕瀏覽器,傲游瀏覽器(傲游1.x、2.x為IE內核,3.x為IE與Webkit雙核)、百度瀏覽器(早期版本)、世界之窗瀏覽器(最初為IE內核,2013年采用Chrome+IE內核)、2345瀏覽器、騰訊TT、淘寶瀏覽器、采編讀瀏覽器、搜狗高速瀏覽器(1.x為Trident,2.0及以后版本為Trident+Webkit)、阿云瀏覽器(早期版本)、瑞星安全瀏覽器、Slim Browser、 GreenBrowser、愛帆瀏覽器(12 之前版本)、115瀏覽器、155瀏覽器、閃游瀏覽器、N氧化碳瀏覽器、糖果瀏覽器、彩虹瀏覽器、瑞影瀏覽器、勇者無疆瀏覽器、114瀏覽器、螞蟻瀏覽器、飛騰瀏覽器、速達瀏覽器、佐羅瀏覽器、海豚瀏覽器(iPhone/iPad/Android)、UC瀏覽器(Webkit內核+Trident內核)等。

其中部分瀏覽器的新版本是“雙核”甚至是“多核”,其中一個內核是Trident,然后再增加一個其他內核。國內的廠商一般把其他內核叫做“高速瀏覽模式”,而Trident則是“兼容瀏覽模式”,用戶可以來回切換。

Gecko

Gecko(Firefox內核):Netscape6開始采用的內核,后來的Mozilla FireFox火狐瀏覽器) 也采用了該內核,Gecko的特點是代碼完全公開,因此,其可開發程度很高,全世界的程序員都可以為其編寫代碼,增加功能。因為這是個開源內核,因此受到許多人的青睞,Gecko內核的瀏覽器也很多,這也是Gecko內核雖然年輕但市場占有率能夠迅速提高的重要原因。

事實上,Gecko引擎的由來跟IE不無關系,前面說過IE沒有使用W3C的標準,這導致了微軟內部一些開發人員的不滿;他們與當時已經停止更新了的 Netscape的一些員工一起創辦了Mozilla,以當時的Mosaic內核為基礎重新編寫內核,于是開發出了Gecko。不過事實上,Gecko 內核的瀏覽器仍然還是Firefox (火狐) 用戶最多,所以有時也會被稱為Firefox內核。此外Gecko也是一個跨平臺內核,可以在Windows、 BSD、Linux和Mac OS X中使用。

補充:JavaScript引擎是:SpiderMonkey(1.0-3.0)/ TraceMonkey(3.5-3.6)/ JaegerMonkey(4.0)。

Gecko內核常見的瀏覽器:Mozilla Firefox、Mozilla SeaMonkey、waterfox(Firefox的64位開源版)、Iceweasel、Epiphany(早期版本)、Flock(早期版本)、K-Meleon。

Presto

Presto(Opera前內核) (已廢棄): Opera12.17及更早版本曾經采用的內核,現已停止開發并廢棄,該內核在2003年的Opera7中首次被使用,該款引擎的特點就是渲染速度的優化達到了極致,然而代價是犧牲了網頁的兼容性。

實際上這是一個動態內核,與前面幾個內核的最大的區別就在腳本處理上,Presto有著天生的優勢,頁面的全部或者部分都能夠在回應腳本事件時等情況下被重新解析。此外該內核在執行Javascrīpt的時候有著最快的速度,根據在同等條件下的測試,Presto內核執行同等Javascrīpt所需的時間僅有Trident和Gecko內核的約1/3(Trident內核最慢,不過兩者相差沒有多大),本文的其中一個修改者認為上述測試信息過于老舊且不完整,因為他曾做過的小測試顯示Presto部分快部分慢,各內核總體相當。那次測試的時候因為Apple機的硬件條件和普通PC機不同所以沒有測試WebCore內核。只可惜Presto是商業引擎,使用Presto的除開Opera以外,只剩下NDSBrowser、Wii Internet Channle、Nokia 770網絡瀏覽器等,這很大程度上限制了Presto的發展。

Opera現已改用Google Chrome的Blink內核。

Webkit

Webkit(Safari內核,Chrome內核原型,開源):它是蘋果公司自己的內核,也是蘋果的Safari瀏覽器使用的內核。 Webkit引擎包含WebCore排版引擎及JavaScriptCore解析引擎,均是從KDE的KHTML及KJS引擎衍生而來,它們都是自由軟件,在GPL條約下授權,同時支持BSD系統的開發。所以Webkit也是自由軟件,同時開放源代碼。在安全方面不受IE、Firefox的制約,所以Safari瀏覽器在國內還是很安全的。

限于Mac OS X的使用不廣泛和Safari瀏覽器曾經只是Mac OS X的專屬瀏覽器,這個內核本身應該說市場范圍并不大;但似乎根據最新的瀏覽器調查表明,該瀏覽器的市場甚至已經超過了Opera的Presto了——當然這一方面得益于蘋果轉到x86架構之后的人氣暴漲,另外也是因為Safari 3終于推出了Windows版的緣故吧。Mac下還有OmniWeb、Shiira等人氣很高的瀏覽器。

Google Chrome、360極速瀏覽器以及搜狗高速瀏覽器高速模式也使用Webkit作為內核(在腳本理解方面,Chrome使用自己研發的V8引擎)。WebKit 內核在手機上的應用也十分廣泛,例如 Google 的手機 Gphone、 Apple 的iPhone, Nokia’s Series 60 browser 等所使用的 Browser 內核引擎,都是基于 WebKit。

WebKit內核常見的瀏覽器:傲游瀏覽器3、Apple Safari (Win/Mac/iPhone/iPad)、Symbian手機瀏覽器、Android 默認瀏覽器,

Blink

產品簡介

Blink是一個由Google和Opera Software開發的瀏覽器排版引擎,Google計劃將這個渲染引擎作為Chromium計劃的一部分,并且在2013年4月的時候公布了這一消息。這一渲染引擎是開源引擎WebKit中WebCore組件的一個分支,并且在Chrome(28及往后版本)、Opera(15及往后版本)和Yandex瀏覽器中使用。

相關新聞

2013年4月3日,谷歌在Chromium Blog上發表博客,稱將與蘋果的開源瀏覽器核心Webkit分道揚鑣,在Chromium項目中研發Blink渲染引擎(即瀏覽器核心),內置于Chrome瀏覽器之中。

蘋果在Safari中采用Webkit核心,并于2005年將Webkit公開為開源軟件。谷歌當時采用蘋果的Webkit核心打造了Chrome瀏覽器。Opera也宣布稱將會轉向Webkit核心,但是谷歌宣布此舉后,Opera表示將會跟隨谷歌采用其Blink瀏覽器核心,同時參與了Blink的開發。

谷歌轉向研發Blink瀏覽器內核意義重大,谷歌此舉欲降低Webkit即蘋果在瀏覽器市場的影響力。截止2012年底,Webkit瀏覽器內核占總瀏覽器市場份額約40%。谷歌解釋稱,Chromium多處理架構系統與其他Webkit瀏覽器很不相同。谷歌工程師Adam Barth在博客中表示,隨著瀏覽器的發展,蘋果的Webkit已經不能滿足用戶需求,同時也有礙瀏覽器技術的創新步伐。但是他也表示,谷歌自主研發Blink內核絕非易事,但是新內核將會提升整個開源網絡生態系統的機能。谷歌做出此舉之際,Mozilla與三星也達成合作協議開發“下一代”瀏覽器渲染引擎Servo。

排版引擎

WebCore

WebCore是蘋果公司開發的排版引擎,它是在另外一個排版引擎“KHTML”的基礎上而來的。使用WebCore的主要有Safari,此外還有OmniWeb、Shiira、Swift等。Safari現支持Windows,但效果不如macOS上的。

KHTML

KHTML,是HTML網頁排版引擎之一,由KDE所開發。

KDE系統自KDE2版起,在檔案及網頁瀏覽器使用了KHTML引擎。該引擎以C++編程語言所寫,并以LGPL授權,支援大多數網頁瀏覽標準。由于微軟的Internet Explorer的占有率相當高,不少以FrontPage制作的網頁均包含只有IE才能讀取的非標準語法,為了使KHTML引擎可呈現的網頁達到最多,部分IE專屬的語法也一并支援。

KHTML擁有速度快捷的優點,但對錯誤語法的容忍度則比Mozilla產品所使用的Gecko引擎小。

蘋果電腦于2002年采納了KHTML,作為開發Safari瀏覽器之用,并發布所修改的最新及過去版本源代碼。后來發表了開放源代碼的WebCore及WebKit引擎,它們均是KHTML的衍生產品,在開發網站列出引擎改變內容,并會傳回至KDE計劃。由于兩個衍生產品各走不同路線,使兩者源代碼偏離,在與KDE交換更新會出現困難。其中一個原因,是蘋果在對外公開源代碼之前,以一年時間編修他們的KHTML。另外,蘋果傳送更新至KDE計劃的方式,多是一口氣把大量改動一起傳送,KDE在整理資料也出現一定的困難,及后蘋果表示會以CVS格式來傳送。再者,蘋果所作出的改動包括macOS系統獨有的事物,如Objective-C、KWQ等,在Linux及KHTML是沒有的。但KDE方面仍透過這些改動,為KHTML加入新功能及加快其排版速度。

基于KHTML內核的內核:WebKit、WebCore。

瀏覽器內核技術

瀏覽器內核主要包括以下三個技術分支:排版渲染引擎、 JavaScript引擎,以及其他。

微軟對排版渲染引擎相關專利的申請最多,達到瀏覽器內核相關專利申請總量的93.3%。這與排版渲染引擎的功能密不可分。其主要負責取得網頁的內容(HTML、XML、圖像等)、整理信息,以及計算網頁的顯示方式,然后輸出至顯示器。所有的網頁瀏覽器、電子郵件客戶端以及其他需要編輯、顯示網絡內容的應用程序都需要排版渲染引擎,特別是排版渲染引擎決定了瀏覽器如何顯示網頁的內容以及頁面的格式信息。由于在網頁顯示中所起的重要作用,微軟一直側重于涉及排版渲染引擎的專利申請。在2006年和2009年,配新版本的研發帶來了排版渲染引擎專利申請量的頂峰這充分顯示了微軟在新版本的改進中對瀏覽器排版渲染引擎技術的重視。

JavaScript引擎是用來渲染JavaScript的,JavaScript的渲染速度越快,動態網頁的展示也越快。眾所周知,微軟的IE瀏覽器實現完全支持客戶端JavaScript語言標準的時間晚于其他瀏覽器。因此,在這一技術分支下,相較其他瀏覽器企業而言,微軟公司并不具有優勢。在2001~2004年,在瀏覽器內核技術分支下,微軟的中國專利申請量并不多,方面是由于內核為開放內核,另一方面則是由于IE本身一直與 Windows捆綁銷售,使得Trident內核長期一家獨大,微軟很長時間都沒有更新 Trident內核,從而導致Trident內核幾乎與W3C標準脫節。

2005年至今,由于IE瀏覽器存在缺陷,從而使得很多用戶轉向其他瀏覽器。微軟公司顯然注意到了這一點,逐步重視瀏覽器內核的改進升級,并將由此帶來的相關專利在中國進行了布局。最明顯的是,2006年和2009年的專利申請量大幅上升,其中關于瀏覽器內核中排版渲染引擎的專利申請均達到了17件;在2008年還有一件關于 JavaScript引擎的專利申請,以上均表明I內核在2005年之后有了明顯改進。 [2]

歷史發展

在2008年到2009年的第二次瀏覽器大戰之前,JavaScript引擎JavaScript engine)僅簡單地被當作能閱讀執行JavaScript源代碼的解釋器。

第一款JavaScript引擎由布蘭登·艾克在網景公司開發,用于Netscape Navigator網頁瀏覽器中。引擎的名字叫做SpiderMonkey,由C實現。它自JavaScript 1.5升級以符合ECMA-262 版本3。Rhino引擎,由網景公司的Norris Boyd開發,由Java實現。像SpiderMonkey一樣,Rhino符合ECMA-262 版本3。JavaScript引擎的應用例子還包括: Apple Safari4的Nitro,Chrome瀏覽器的V8和 Mozilla Firefox 3.5的TraceMonkey。

目前為止,最通用的JavaScript宿主環境是網頁瀏覽器。網頁瀏覽器一般使用公共的API創建“宿主對象”以便于在JavaScript中支持DOM。

網頁服務器是另一種通過的應用程序引擎。一個JavaScript服務器能夠處理HTTP請求并回應,這樣JavaScript程序能動態生成頁面。微軟用于IISASP技術允許服務器端代碼以VB Script或JScript(微軟的JavaScript實現)寫成。Jaxer是以JavaScript編寫成的網頁服務器,這有利于在服務器端和客戶端使用同樣的代碼。

引擎應用

主要的網頁瀏覽器JavaScript引擎:

Mozilla

SpiderMonkey,第一款JavaScript引擎,由Brendan Eich在Netscape Communications時編寫,用于Mozilla Firefox 1.0~3.0版本。

Rhino,由Mozilla基金會管理,開放源代碼,完全以Java編寫。

TraceMonkey,基于實時編譯的引擎,其中部份代碼取自Tamarin引擎,用于Mozilla Firefox 3.5~3.6版本。

JaegerMonkey,德文J?ger原意為獵人,結合追蹤和組合碼技術大幅提高性能,部分技術借鑿了V8、JavaScriptCore、WebKit,用于Mozilla Firefox 4.0以上版本。

Google

V8,開放源代碼,由Google丹麥開發,是Chrome瀏覽器的一部分。

微軟

Chakra (JScript引擎),中文譯名為查克拉,用于Internet Explorer 9的32位版本。

Opera

Linear A,用于Opera 4.0~6.1版本。

Linear B,用于Opera 7.0~9.2版本。

Futhark,用于Opera 9.5~10.2版本。

Carakan,由Opera軟件公司編寫,自Opera10.50版本開始使用。

其它

KJS,KDEECMAScript/JavaScript引擎,最初由Harri Porten開發,用于KDE項目的Konqueror網頁瀏覽器中。

Narcissus,開放源代碼,由Brendan Eich編寫(他也參與編寫了第一個SpiderMonkey)。

Tamarin,由Adobe Labs編寫,Flash Player 9所使用的引擎。

Nitro(原名SquirrelFish),為Safari 4編寫。

性能演化

2008年5月11日,Mozilla采用PGO(Profile-guided Optimizations)特性指引優化,使Firefox 3.0的性能大幅提升。2009年6月30日發布的Firefox 3.5使用了Tracing和Nanojit技術,能“在某些情況下的速度提升20到40倍”,其中Nanojit的代碼由Adobe貢獻。

2008年6月2日,WebKit開發團隊聲明了SquirrelFish——一個新的JavaScript引擎能極大地提升Safari解釋腳本的速度。該引擎是Safari 4其中一個新特性,在2008年6月11日發布給程序員使用;最終此JavaScript引擎被稱為Nitro。

在瀏覽器開發者之間展開了一場開發更快的JavaScript引擎的競賽。2008年,Chrome瀏覽器因它的JavaScript性能而被受稱贊,但是其它瀏覽器馬上使用了更快的JavaScript引擎。之后,Chrome瀏覽器在性能上獲得領先,其長處在于它高速的性能和JavaScript的處理速度,這些都由許多網站在主要的瀏覽器之間的速度測試中得到驗證。隨著WebKit的Squirrelfish Extreme和Mozilla的TraceMonkey JavaScript虛擬機 出現,Chrome的JavaScript執行速度就被超越了。Google丹麥在Chrome 2中開發了更快速的V8引擎。

一個典型的瀏覽器有一個圖形引擎和一個獨立的JavaScript引擎。這樣JavaScript引擎能夠被更方便的測試、重新生成或者在另一些項目中使用。例如Carakan被用在Presto中,Nitro被用在WebKit中,SpiderMonkey被用在Gecko中,KJS被用在KHTML中,Rhino默認不包含任何布局引擎。但還有其他組合,例如V8與WebKit被用于Chrome瀏覽器中。JavaScript引擎能為程序員提供部分操作瀏覽器的功能(網絡、DOM、外部事件、HTML5視頻、canvas和存儲)。

Sunspider是一個JavaScript實用基準測試通過一系列關于JavaScript語言的腳本測試JavaScript引擎的速度。Sunspider不測試無關于JavaScript的特性(不使用HTML、CSS和無網絡情況下)。

實現

參見:ECMAScript引擎列表 JavaScript是一種ECMAScript方言,在許多程序中得以實現,特別是在網頁瀏覽器。這些方言通常擴展了語言,或者標準庫和相關API,例如W3C定義的DOM。這意味著以一種方言實現的程序不兼容于另一種方言的實現,除非程序使用了方言中的公共子集所具有的特性和API。

在實現和方言中存在著一些差別。一種語言的方言有一些與語言不同的地方。實現能夠執行該語言或方言編寫的程序。

image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。