瀏覽器最核心的部分是渲染引擎(Rendering Engine),我們一般習(xí)慣稱為"瀏覽器內(nèi)核",其負(fù)責(zé)解析網(wǎng)頁語法(如標(biāo)準(zhǔn)通用標(biāo)記語言的子集HTML、JavaScript)并渲染、展示網(wǎng)頁。因此,所謂的瀏覽器內(nèi)核通常也就是指瀏覽器所采用的渲染引擎,渲染引擎決定了瀏覽器如何顯示網(wǎng)頁的內(nèi)容以及頁面的格式信息。不同的瀏覽器內(nèi)核對網(wǎng)頁編寫語法的解析也有所不同,因此同一網(wǎng)頁在不同的內(nèi)核瀏覽器里的渲染、展示效果也可能不同。
?下面介紹幾種主流瀏覽器的內(nèi)核發(fā)展
Internet?Explorer:
很多人一談到瀏覽器就會想到Internet?Explorer,我們簡稱它為IE。IE的內(nèi)核即Trident,該內(nèi)核程序在1997年的IE4中首次被采用,是微軟在Mosaic代碼的基礎(chǔ)之上修改而來的。確實(shí)在生活中用到最多的就是這個(gè)瀏覽器了,很多人只用這個(gè)瀏覽器,甚至有些人在意識里只有這個(gè)瀏覽器。但是Internet Explorer只是瀏覽器里的一個(gè)。最新的版本是IE11,版本號是11.0.9600.17358,預(yù)裝在windows8.1中。
Safari:
Safari是蘋果公司開發(fā)的瀏覽器,Safari所用瀏覽器內(nèi)核的是WebKit。?Safari在2003年1月7日首度發(fā)行測試版,并成為Mac?OS?X?v10.3與之后版本的默認(rèn)瀏覽器,也成為蘋果其它系列產(chǎn)品的指定瀏覽器。????
需要了解的是,雖然我們稱WebKit為瀏覽器內(nèi)核,但不太適合直接稱之為我們開頭提到的Rendering?Engine(渲染引擎),因?yàn)閃ebKit本身主要是由兩個(gè)引擎構(gòu)成的,一個(gè)正是渲染引擎“WebCore”,另一個(gè)則是javascript解釋引擎“JSCore”,它們均是從KDE的渲染引擎KHTML及javascript解釋引擎KJS衍生而來。
在2010年4月,蘋果公司宣布了其瀏覽器引擎Webkit的最新項(xiàng)目?Webkit2。Webkit2的目標(biāo)是實(shí)現(xiàn)獨(dú)立進(jìn)程與非阻斷式API。
?
Chrome:
????????谷歌Chrome瀏覽器內(nèi)核是Blink,從08年創(chuàng)始至今一直使用蘋果公司的WebKit作為瀏覽器內(nèi)核原型,是WebKit的一個(gè)分支,我們可以稱之為Chromium引擎。
這里順便介紹下Chrome和Chromium兩個(gè)瀏覽器的區(qū)別——Chromium瀏覽器是谷歌為發(fā)展自家的瀏覽器Chrome而開啟的計(jì)劃,所以Chromium相當(dāng)于Chrome的工程版或稱實(shí)驗(yàn)版(盡管Chrome自身也有β版階段),新功能會率先在Chromium上實(shí)現(xiàn),待驗(yàn)證后才會應(yīng)用在Chrome上。Chromium一天最多可以更新十幾二十個(gè)版本,實(shí)驗(yàn)性的新特性都會現(xiàn)在這里放出,但是Chromium本身其實(shí)并不穩(wěn)定;而Chrome總共有四個(gè)更新分支:Canary、Dev、Beta、Stable,穩(wěn)定性依次增強(qiáng)。盡管上面一眾經(jīng)常被統(tǒng)稱為 WebKit,實(shí)際上各自都使用了自己的 WebKit 分支或者編譯時(shí)選項(xiàng),使得最終的渲染結(jié)果也是存在一定的差異的。不過大體上 WebKit 社區(qū)內(nèi)部還是比較和諧的,各個(gè)成員之間也為維持兼容性作出了努力,直到 2010 年隨著 OS X Lion 一起面世的 WebKit2。由于 WebKit2 在 WebCore 層面上實(shí)現(xiàn)的進(jìn)程隔離在一定程度上與 Google Chrome/Chromium 自己的沙箱設(shè)計(jì)存在沖突,故 Google Chrome/Chromium 一直停留在 WebKit,使用 Backport 的方式實(shí)現(xiàn)和主線 WebKit2 的兼容。顯而易見這增加了 WebKit 和 Chromium 的復(fù)雜性,且在一定程度上影響了 Chromium 的架構(gòu)移植工作。然而在13年發(fā)布的Chrome?28.0.1469.0版本開始,Chrome放棄Chromium引擎轉(zhuǎn)而使用最新的Blink引擎(基于WebKit2——蘋果公司于2010年推出的新的WebKit引擎),Blink對比上一代的引擎精簡了代碼、改善了DOM框架,也提升了安全性。
?
Firefox:
????????Mozilla?Firefox是一個(gè)開源網(wǎng)頁瀏覽器,原名是Firebird,2004年2月9日,Mozilla?Firebird決定改稱Mozilla?Firefox。Firefox瀏覽器使用的是Gecko內(nèi)核,其發(fā)展歷程如下:
?1997年,網(wǎng)景收購了DigitalStyle。當(dāng)時(shí),網(wǎng)景瀏覽器在各方面的表現(xiàn)已經(jīng)比不上她的主要競爭對手Internet?Explorer。網(wǎng)景開始研發(fā)下一代的排版引擎,并期望把新的排版引擎應(yīng)用于下一版本的網(wǎng)景瀏覽器上。
????????1998年初,Mozilla計(jì)劃開始執(zhí)行。這個(gè)新的排版引擎名為Raptor,以開發(fā)源碼的方式發(fā)放于互聯(lián)網(wǎng)上。后來,因?yàn)樯虡?biāo)問題,Raptor改名為NGLayout(即next?generation?layout之意)。而最后NGLayout就被網(wǎng)景重新命名為Gecko。
????????2003年7月15日時(shí)代華納解散了網(wǎng)景公司,大部分開發(fā)者被解雇。Mozilla基金會亦在當(dāng)天成立,繼續(xù)推動著Gecko的發(fā)展。時(shí)至今天,Gecko仍繼續(xù)由Mozilla的雇員和義工所維護(hù)和發(fā)展。
幾個(gè)主流瀏覽器優(yōu)缺點(diǎn)比較
