瀏覽器發展史
現在瀏覽器已經成為網上生活的重要家園和工具。而從1991年,Web之父Tim Berners-Lee親手設計第一個HTML瀏覽器開始,到現在HTML5大行其道,蘋果、谷歌等創新企業引導潮流,恍若隔世。
曾經AOL收購Netscape后被大罵是“毀人不倦”,曾經也有很多人為IE寫過“墓志銘”,曾經很多人還見證了Mozilla從出生到壯大,也曾驚訝于蘋果Webkit的英明,而現在想起這一幕一幕,心中感慨萬千。當再一次翻開瀏覽器的發展史,我們很鮮明地發覺一個規律:江山代有才人出,各領風騷僅幾年。后來者居上,似乎是瀏覽器市場的宿命。
下面以內核(Rendering Engine)的變革來簡述一下過去幾十年瀏覽器市場風云,個中的刺刀見紅,值得玩味。為了不讓這篇文章寫成技術說明文,我還是盡可能說得簡單通俗點。
內核
首先得搞懂瀏覽器內核究竟指的是什么。
瀏覽器內核英文叫做:Rendering Engine,中文翻譯很多,排版引擎、解釋引擎、渲染引擎,現在流行稱為瀏覽器內核,至于為什么流行這么稱呼,請自行領悟。內核可以分成兩部分:渲染引擎(layout engineer)或(Rendering Engine)和 JS 引擎。內核負責取得網頁的內容(HTML、XML、圖像等等)、整理訊息(例如加入 CSS 等),以及計算網頁的顯示方式,然后會輸出至顯示器或打印機。瀏覽器的內核的不同對于網頁的語法解釋會有不同,所以渲染的效果也不相同。所有網頁瀏覽器、電子郵件客戶端以及其它需要編輯、顯示網絡內容的應用程序都需要內核。JS 引擎則是解析 Javascript 語言,執行 javascript 語言來實現網頁的動態效果。
最開始渲染引擎和 JS 引擎并沒有區分的很明確,后來 JS 引擎越來越獨立,內核就傾向于單指渲染引擎。有一個網頁標準計劃小組制作了一個 ACID 來測試引擎的兼容性和性能。內核的種類很多,如加上沒什么人使用的非商業的免費內核,可能會有 10 多種,但是常見的瀏覽器內核可以分這四種:Gecko、Trident、Webkit、Blink。
需要注意瀏覽器和瀏覽器內核是不同的概念,瀏覽器指的是Chrome、Firefox、Safari、Opera等,而瀏覽器內核則是Blink、Webkit、Gecko、Trident等。瀏覽器內核只負責渲染,GUI及網絡連接等跨平臺工作則是瀏覽器實現的。
第一次變革:Netscape王者
曾幾何時,我用著Netscape,大罵那些用IE的是人“土鱉”。而到現在,這個名字已成為歷史。
故事從1994年開始,那一年網景通信公司推出了代號為“網景導航者”的網景瀏覽器1.0,互聯網歷史上第一款商業化瀏覽器產品——Netscape誕生了,隨后的Netscape6開始采用Gecko內核。后來的Mozilla FireFox(火狐瀏覽器)也采用了該內核,Gecko 的特點是代碼完全公開,因此,其可開發程度很高,全世界的程序員都可以為其編寫代碼,增加功能。因為這是個開源內核,因此受到許多人的青睞,Gecko 內核的瀏覽器也很多,這也是 Gecko 內核雖然年輕但市場占有率能夠迅速提高的重要原因。這款產品迅速風靡,隨后迭代版本占領了瀏覽器大部分份額。在最鼎盛的時期,風光程度甚至超過了后來者IE。
第二次變革:蝗蟲IE
瀏覽器世界統治時間最長、最為著名的莫過于微軟的IE系列瀏覽器。如果不是網景瀏覽器的太過成功,或許不會有后來的IE了,快速的發展讓Netscape犯下了一個致命錯誤,由于瀏覽器的成功帶來的自信導致這家公司干脆嘗試去做一個操作系了,而當時操作系統領域已經領先的微軟馬上意識到網景的威脅,立馬收購另外一家瀏覽器公司,1997年微軟基于Mosaic(“馬賽克”,這是人類歷史上第一個瀏覽器,從此網頁可以在圖形界面的窗口瀏覽)代碼修改成了新的Trident內核,開發出了Internet Explorer,而且微軟把IE瀏覽器捆綁在了他自己的操作系統中,想想當時的場景,安裝一個微軟的操作系統沒有瀏覽器,還需要再花錢買一張網景瀏覽器軟件才能上網,盡管網景瀏覽器很好用,但這樣也很麻煩。微軟操作系統中直接帶有瀏覽器,試問還有誰愿意去在花錢買個瀏覽器軟件?所以IE立馬占領了瀏覽器市場。一直到今天,盡管有些強弩之末,但依然占據了半壁江山。
很多人將IE的成功歸咎于微軟的“蝗蟲”式壟斷戰略,但坦白地說,Trident內核幫了它大忙,尤其在早期,從IE4中首次采用一直沿用到了IE11,所以Trident也被普遍稱為IE內核。Trident實際上是一款開放的內核,它比較輕盈,而且歷經多代發展,已具有成熟的接口規范和接口開發性,能夠適應不同的腳本要求。因此才有許多采用 IE 內核而非 IE 的瀏覽器(殼瀏覽器)涌現。
非 Trident 內核瀏覽器的市場占有率大幅提高也致使許多網頁開發人員開始注意網頁標準和非 IE瀏覽器的瀏覽效果問題。
補充:IE 從版本 11 開始,初步支持 WebGL 技術。IE8 的 JavaScript 引擎是 Jscript,IE9 開始用 Chakra,這兩個版本區別很大,Chakra 無論是速度和標準化方面都很出色。
國內很多的雙核瀏覽器的其中一核便是 Trident,美其名曰 “兼容模式”。
Window10 發布后,IE 將其內置瀏覽器命名為 Edge,Edge 最顯著的特點就是新內核 EdgeHTML。關于 Edge 瀏覽器更多可以參考 如何評價 Microsoft Edge 瀏覽器?
第三次變革:烈士遺孤Mozilla
1998年1月,網景與微軟IE瀏覽器競爭失利以后,為了挽回市場,網景通信公司公布旗下所有軟件以后的版本皆為免費,并成立了非正式組織Mozilla,自此Mozilla瀏覽器開始登上舞臺。Netscape雖然死了,但是留下的“遺孤”Firefox(狐貍),則開始邁出了漫長的復仇之路。Mozilla Firefox也是基于Gecko內核,但此Gecko已非彼Gecko。
上一代的Gecko內核由于公司產品研發策略發生的偏差,導致它越來越臃腫,受人詬病。尤其是被AOL收購后,這家公司除了將Netscape帶向死亡外,沒有任何建樹。
而新一代的Gecko內核引擎的由來跟 IE 不無關系,由于 IE 本身的 “壟斷性”(雖然名義上 IE 并非壟斷,但實際上,特別是從 Windows 95 年代一直到 XP 初期,就市場占有率來說 IE 的確借助 Windows 的東風處于 “壟斷” 的地位)而使得 Trident 內核的長期一家獨大,微軟很長時間都并沒有更新 Trident 內核,這導致了兩個后果——一是 Trident 內核曾經幾乎與 W3C 標準脫節(2005年)這也導致了微軟內部一些開發人員的不滿,二是 Trident 內核的大量 Bug 等安全性問題沒有得到及時解決,然后加上一些致力于開源的開發者和一些學者們公開自己認為 IE 瀏覽器不安全的觀點,也有很多用戶轉向了其他瀏覽器,而那些不滿的部分微軟“叛將”與當時已經停止更新了的 Netscape 的一些員工一起創辦了Mozilla(Opera 也是這個時候興起的),以當時的 Mosaic 內核為基礎重新編寫內核,于是開發出了 Gecko。針對IE,Gecko祭出了自己的殺手锏——開源,通過源代碼開放,徹底解決了安全和速度問題。尤其是熱代碼加速這個全新思路,為Firefox打開了勝利之門。從剛開始被微軟取笑為“臭狐貍”到與IE形成分庭抗禮的局勢,也不過是短短幾年而已。不過,Gecko 內核的瀏覽器仍然還是 Firefox 用戶最多,所以有時也會被稱為 Firefox 內核。此外 Gecko 也是一個跨平臺內核,可以在Windows、 BSD、Linux 和 Mac OS X 中使用。
第四次變革:蘋果Safari來了
可惜的是盡管Mozilla、opera瀏覽器很好用,可微軟操作系統的市場占有率很大,造成其他瀏覽器的市場份額一直不變。IE自從坐上了份額第一的頭把交椅后,就一直不思進取了,自己制作一套web標準,也不怎么支持html,javascript,css這些web技術的新版本特性,微軟從ie6開始到ie8七八年間幾乎沒對Trident進行過像樣的更新,這與后來勤快的蘋果、Google形成鮮明的對比。雖然ie通過壟斷贏得了市場,但不安全、崩潰、速度慢等等問題也一直讓用戶難以忍受。現實往往就是這么捉摸不定,變幻莫測,正當人們認為Gecko將與Trident上演“雙寡頭”的時候,蘋果大叔開始出手,做了蟬和黃雀后面的螳螂。
話說回來,這也得怪Gecko和Trident他們自己。Gecko再次犯了當年的錯誤——貪大求全,將郵件組、新聞組、聊天等流行應用都打包進了Firefox,導致內存占用問題。此外,Firefox對JavaScript的支持并不好,反應遲鈍也開始被頻頻抨擊。而Trident呢,幾乎沒怎么更新過,很多兼容問題導致開發者也是頭大。再加上開放性問題,致使IE在安全性、速度等諸多問題上被群起而攻。從這個意義上來說,是壟斷成就了IE,同樣也是壟斷毀滅了IE。
勤勞的又追求極致的蘋果推出的基于WebKit內核的Safari瀏覽器則引導了瀏覽器的本質回歸潮流。Safari 在 2003 年 1 月 7 日首度發行測試版,并成為 Mac OS X v10.3 與之后版本的默認瀏覽器,也成為蘋果其它系列產品的指定瀏覽器(也已支持 Windows 平臺)。WebKit內核則是蘋果基于KDE小組(Linux桌面系統)的 KHTML 引擎開發出來的,可以說 WebKit 是 KHTML 的一個開源的分支。當年蘋果在比較了 Gecko 和 KHTML 后,選擇了后者來做引擎開發,是因為相比Gecko,KHTML 擁有清晰的源碼結構和極快的渲染速度,也實現了JavaScript腳本的快速解釋器調用。事實上,這個寶押對了。這種輕靈隨后就贏得了Google的青睞(2008 年谷歌公司發布 chrome 瀏覽器,采用的 chromium 內核便 fork 了Webkit)。現在Google Chorme已成增長最快,最受開發者喜歡的瀏覽器了,加上蘋果Safari的份額,WebKit已經與Gecko、Trident開始“三國演義”。
有意思的是,自從蘋果的WebKit推出后,不光是谷歌青睞,就連Firefox內部也開始有“異見”,要求拋棄Gecko而選擇WebKit。
更有意思的是,一提到 webkit,大家首先想到的便是chrome,可以說,chrome將 Webkit內核深入人心,殊不知,Webkit 的鼻祖其實是Safari。現在很多人錯誤地把 webkit 叫做 chrome內核(即使 chrome內核已經是 blink 了),蘋果都哭瞎了有木有,Webkit內核可以說是以硬件盈利為主的蘋果公司給軟件行業的最大貢獻之一。
第五次變革:后起之秀-谷歌Chrome(Bink/Chromium)
自蘋果推出的WebKit內核后,這種回歸本質的輕靈受到了谷歌的青睞,2008年chrome橫空出世。界面簡潔、加載快速、數據安全等這些特點讓chrome越來越受喜歡,甚至好過于蘋果了。加之很多web開發者對其的追捧,最終使其市場份額逐步攀升,成為了后起之秀。
谷歌發布的 chrome 瀏覽器使用的內核被命名為 chromium。chromium 雖然是開源引擎webkit的一個分支,卻把 WebKit 的代碼梳理得可讀性提高很多,所以以前可能需要一天進行編譯的代碼,現在只要兩個小時就能搞定。因此 Chromium 引擎和其它基于 WebKit 的引擎所渲染頁面的效果也是有出入的。所以有些地方會把 chromium 引擎和 webkit 區分開來單獨介紹,而有的文章把 chromium 歸入 webkit 引擎中,都是有一定道理的。谷歌公司后來還研發了自己的 Javascript 引擎,V8,極大地提高了 Javascript 的運算速度。
Chromium 問世后,帶動了國產瀏覽器行業的發展。一些基于 chromium 的單核,雙核瀏覽器如雨后春筍般拔地而起,例如:搜狗、360、QQ瀏覽器等等,無一不是套著不同的外殼用著相同的內核。然而2013年4月3日,谷歌在Chromium Blog上發表 博客,稱將與蘋果的開源瀏覽器核心 Webkit 分道揚鑣,在 Chromium 項目中研發 Blink 渲染引擎(即瀏覽器核心),內置于 Chrome 瀏覽器之中。
Webkit 用的好好的,為何要投入到一個新的內核中去呢?
Blink 其實是 WebKit 的分支,如同 WebKit 是 KHTML 的分支一樣。Google 的 Chromium 項目此前一直使用 WebKit(WebCore)作為渲染引擎,但出于某種原因,并沒有將其多進程架構移植入Webkit。后來,由于蘋果推出的 WebKit2 與 Chromium 的沙箱設計存在沖突,所以 Chromium 一直停留在 WebKit,并使用移植的方式來實現和主線 WebKit2 的對接。這增加了 Chromium 的復雜性,且在一定程度上影響了 Chromium 的架構移植工作。基于以上原因,Google 決定從 WebKit 衍生出自己的 Blink 引擎(后由 Google 和 Opera Software 共同研發),將在 WebKit 代碼的基礎上研發更加快速和簡約的渲染引擎,并逐步脫離 WebKit 的影響,創造一個完全獨立的 Blink 引擎。這樣以來,唯一一條維系 Google 和蘋果之間技術關系的紐帶就這樣被切斷了。
Google 和 Apple 在多個領域都是競爭對手,而唯獨在瀏覽器引擎上有技術合作,利益一致。但為了各自的利益,誰都不會拿出 100% 的 “誠意” 來做好 WebKit,因為你做出來的成果競爭對手可以直接享用。移動互聯網已經崛起,手機和平板設備端必將成為瀏覽器的另一個戰場。這個時候,如果 Google 跟蘋果仍然黏在一起,將會嚴重阻礙雙方的進步,也會阻礙 WebKit 的進步。據說 Blink 刪除了 880w 行 webkit 代碼。
至于為什么叫 Blink?有興趣的可以看下這篇訪談 Paul Irish on Chrome Moving to Blink,里面說:
it fits that Blink will never support the infamous <blink> tag.
Blink 引擎問世后,國產各種 chrome 系的瀏覽器也紛紛投入 Blink 的懷抱,可以在瀏覽器地址欄輸入 chrome://version 進行查看。
在chrome發展壯大過程中,微軟才意識到chrome開始對它逐步侵蝕自己的市場有了危機感,才開始頻繁更新IE,2011年IE9發布,2012年IE10發布,2013年IE11發布,最后IE的代碼實在適應不了新要求的web技術,就重新開發了一個名為“edge”的瀏覽器用來取代IE,但還是擋不住chrome成為市場份額第一的命運。在IE橫行的那一段時間為了適應IE中國的大多數常用網站也不大符合互聯網標準,也就是說如果用符合互聯網標準的瀏覽器去解析這些網站,反而會不正常顯示,可見IE坐頭把交椅的那幾年,卻一直在誤導和阻撓互聯網的發展,悲哉啊。在此要向那些不斷創新、不斷完善、不斷接納新web技術的瀏覽器公司致敬,面對IE他們的市場份額不高,卻仍然堅持著不斷前進。
第六次變革:1+1>2,雙核時代
Webkit的異軍突起將瀏覽器的特性拉回到“瀏覽”的本質上來——評價瀏覽器優劣的關鍵詞不外乎三個方面:兼容性、安全性、瀏覽速度。而追究每一次瀏覽器的更替,你總會發現,它們在這三方面總有致命缺陷。
如此情況下,一種新的呼聲正在崛起——多核。尤其是在中國市場,由于Firefox等瀏覽器在中國的市場份額極少,中文網頁多是“IE標準”,用戶暫時無法拋棄Trident內核,但他們又需要速度更快、更穩定的瀏覽體驗。采用“多核”之后,這種矛盾迎刃而解。
從全球范圍來看,多核未必蔚然成風,但在特殊的中國市場,這代表了潮流。看看現在的國內瀏覽器吧:360安全瀏覽器,QQ瀏覽器、搜狗瀏覽器,UC瀏覽器、2345加速瀏覽器、百度瀏覽器、獵豹瀏覽器、遨游瀏覽器,世界之窗,有幾個不是雙核的?你再看看國外的瀏覽器:chrome、safari、opera、firefox、ie又有幾個是雙核?
為什么國內主流瀏覽器雙核是標配?
其實,雙核功能的出現與我國互聯網環境有著極大的關系,因為有些像網銀和公司校園這類網站用Chrome瀏覽器打不開或會出問題,但卻可以用IE瀏覽器打開。但是對于常見的網站用 IE 瀏覽器搞不好就會卡死。對于這類問題,我們稱之為“網站存在兼容性問題”。
在沒有出現雙核瀏覽器之前,用戶的使用習慣是大多情況要使用一個基于 WebKit 內核的瀏覽器 Chrome、Safari、Firefox 或 Opera ,然后在碰到兼容性問題時再切換至兼顧兼容性的Trident內核IE瀏覽器上。很顯然,這個“縫”給用戶使用帶來一定的不便。更有甚者,很多用戶從技術層面并不知道Chrome其實比IE做得更好,沒有機會享受更好的上網體驗。而在那個移動互聯網還沒有大行其道的年代,大家普遍的觀點是瀏覽器是互聯網的重要入口,是推廣自家產品的最佳工具,是巨大的流量入口,而用戶的這種痛點正是一個拿到坐票的商機,這種背景造就了國內大量雙核瀏覽器的出現,國產雙核瀏覽器在2011年快速崛起,證明了瀏覽器在兼容性以及速度性能上的訴求,是用戶所需要也是用戶看重的。到現在雙核已經成為了國內瀏覽器的標配。
綜上,雙核功能的定位實際上就是主打WebKit核的快速并以Trident核出色兼容性做為補充,讓“多核”共存共融,真正發揮1+1>2效果的效果。UC瀏覽器的雙核指的也正是這兩個核,且兩個核的定位也是這樣的。但從長遠來看,雙核瀏覽器可能是一條死路,隨著web標準的推廣,ie內核也會越來越靠近標準,很多網站也將不支持舊版本的ie瀏覽器,等過幾年,內核之間已經不存在兼容問題,雙核瀏覽器就沒有賣點了。
為什么Chrome是造就國內雙核瀏覽器的幕后真英雄?
因為,在當時來說,一個是伴隨著Windows操作系統而來的用戶基礎龐大的IE 瀏覽器(Trident內核),而另一個就是基于 WebKit 內核,更多的是兼顧性能的以Chrome為代表的瀏覽器了。
這里有問題,我們都知道 Webkit 內核是蘋果公司基于KHTML內核開發的新內核,但為何大家都選擇了 Chrome 作為第二核呢?
這一方面是因為,雖然Webkit內核是蘋果開發的,但把它發揚光大的并非是蘋果,而是谷歌。谷歌發布的Chromium內核雖然是開源引擎Webkit的一個分支,但卻把 Webkit 的性能優化的更高。Google團隊在Chromium項目上包括Webkit在內做了大量的創新,可以說只要存在影響網頁打開速度的瓶頸,就能看到相應的創新點。象DNS Prefetch、SPDY、QUIC、Prerender、多進程架構、PPAPI、v8 JavaScript引擎、對HTML5的支持等技術內容都是很好的創新例子。這也導致了Chromium 引擎和其它基于 WebKit 的引擎所渲染頁面的效果是有出入的。比如用戶打開的一個站點包含有加載速度較慢的Java廣告,Chromium則會把Java代碼隔離起來,網頁的其它部分則不會受到影響。點擊圖標后,Chrome在數秒鐘內就能啟動—遠遠領先于其他一些基于 Webkit 內核對手。另外 chromium 的預處理也是讓打開網頁的速度快的飛起,比如 Chrome 會根據歷史統計來預估所輸入字符對應的網站,比如輸入了「ba」,根據之前的歷史發現 90% 的概率會訪問「www.baidu.com 」,因此就會在輸入回車前就馬上開始建立 TCP 鏈接甚至渲染了,這里面還有很多其它策略,感興趣的推薦閱讀 High Performance Networking in Chrome。這些特性讓用戶對chrome瀏覽器大加追捧,Webkit內核大紅大紫。加上Chromium又是一個開源項目,所以很自然地會想到基于它做二次開發而吸收其優點。也正因如此,國內市場上的雙核瀏覽器都是采用這一同樣的開發模式。而且一直在快速的跟進Chromium項目的發展。比如2013年的時候,在谷歌Chromium與Webkit分道揚鑣并發布新的 Blink 渲染引擎后,國內雙核瀏覽器也都迅速轉到了Blink 旗下。
這另一方面的原因可能在于移動端。雖然當時移動互聯網還沒有現在這么熱,但苗頭已經起來了,在PC端Webkit內核雖然還不能取代IE內核。但在手機上WebKit內核應用的十分廣泛,例如Google的手機Gphone、Apple的iPhone、Nokia’s Series60 browser等所使用的Browser內核引擎,都是基于WebKit。加之后來谷歌安卓系統的普及和發展,更加確定了Chromium作為國內瀏覽器廠商的不二之選。
還有一方面原因在于chrome os,google估計對操作系統這塊一直不甘心,身為一個和微軟、蘋果并肩的互聯網公司,看著windows和mac在那斗來斗去沒自己什么事兒實在尷尬。但操作系統開源的有linux,商業的有windows、mac,自己如何做一個放眼未來與眾不同的pc操作系統呢?chrome瀏覽器這么成功,于是他們就搞出來了一個基于linux內核的chrome os。可以理解為在Linux的內核上運行一個使用新的窗口系統的Chrome瀏覽器,也就是說這個操作系統中除了驅動只有一個chrome瀏覽器,google把目標定位在了上網本,因為是基于“云概念”,所以辦公和文件全部儲存在云端,這樣電腦可以省去硬盤等一部分硬件,從而降低售價。同時2010年google發布了chrome os并開放源代碼,準備來android、chrome的老套路,2010年下半年google聯合幾大電腦廠商開始銷售上網本。可惜的是上網本受同年喬幫主發布的iPad影響,從2010年到2012年兩年間市場被壓榨的所剩無幾,chrome os至今沒有個像樣的業績,連自家另外一個產品android也不得不跳著版本針對平板做大更新。但這并不妨礙它對chromium內核的推廣貢獻。
最最重要的原因是內核不好開發啊親,Apple都不敢自己弄,拿了KHTML回來改。Google也不敢自己弄,拿了WebKit回來改。Opera自己弄了,然后扔了。IE修修補補,終于決定扔了再寫一個。所以,不拿成熟的過來用,你難道指望國內的公司自己寫一個牛逼的內核嗎?
那為什么有些用戶寧愿瀏覽器雙開,也不愿意用國產的雙核瀏覽器呢?
可能存在以下原因:
- chrome的界面設計甩雙核瀏覽器好幾條街。
- chrome功能上更加安全可靠,雙核瀏覽器感覺會打折扣。
- chrome有ie tab插件(插件會有Cookies丟失、假死現象),可以實現內核切換,沒必要用雙核。
- 用ie的場景不多了,網銀和各大電商都已支持chrome了。
- 雙核瀏覽器是一條死路,隨著web標準的推廣,ie內核也會越來越靠近標準。
- 國產雙核瀏覽器的花里胡哨的自帶插件各種彈窗廣告和自作聰明的復雜設計、無用功能、過度吹噓開始讓人生厭。
- 極客、技術發燒友的使用習慣和普通網友有本質區別。
- 國產的外殼,商業目的遠大于技術目的,第一目的是賺錢,而不是做一個好產品。
總結就是:因為一個沒有實力開發內核的中國小公司,也同樣不可能把外殼和用戶體驗做得比有能力開發優秀內核的世界級公司更好。
被拋棄的Presto
Presto 是挪威產瀏覽器 Opera 的 “前任” 內核,為何說是 “前任”,因為最新的 Opera 瀏覽器早已將之拋棄從而投入到了谷歌大本營。
Opera 的一個里程碑作品是 Opera7.0,因為它使用了 Opera Software 自主開發的 Presto 渲染引擎,取代了舊版 Opera 4 至 6 版本使用的 Elektra 排版引擎。該款引擎的特點就是渲染速度的優化達到了極致,然而代價是犧牲了網頁的兼容性。
Presto 加入了動態功能,例如網頁或其部分可隨著 DOM 及 Script 語法的事件而重新排版。Presto 在推出后不斷有更新版本推出,使不少錯誤得以修正,以及閱讀 Javascript 效能得以最佳化,并成為當時速度最快的引擎。
然而為了減少研發成本,Opera 在 2013 年 2 月宣布放棄 Presto,轉而跟隨 Chrome 使用 WebKit 分支的 Chromium 引擎作為自家瀏覽器核心引擎,Presto 內核的 Opera 瀏覽器版本永遠的停留在了12.17。在 Chrome 于 2013 年推出 Blink 引擎之后,Opera 也緊跟其腳步表示將轉而使用 Blink 作為瀏覽器核心引擎。
Presto 與開源的 WebKit 和經過谷歌加持的 Chromium 系列相比毫無推廣上的優勢,這是 Opera 轉投 WebKit 的主要原因,并且使用 WebKit 內核的 Opera 瀏覽器可以兼容谷歌 Chrome 瀏覽器海量的插件資源。但是換內核的代價對于 Opera 來說過于慘痛。使用谷歌的 WebKit 內核之后,原本快速,輕量化,穩定的 Opera 瀏覽器變得異常的卡頓,而且表現不穩定,Opera 原本舊內核瀏覽器書簽同步到新內核上的工作 Opera 花了整整兩年時間,期間很多 Opera 的用戶紛紛轉投谷歌瀏覽器和其他瀏覽器,造成了眾多的用戶流失。時至今日現在還有上千萬人在使用老版本的 Opera。
很多人都認為 Opera 瀏覽器終止在了12.17,此后所更新的 Opera 版本號不再是原來那個 Opera。
說好的 Presto Forever 呢?
國產瀏覽器起源
國產瀏覽器起源于IE,一位網名為changyou(暢游)的程序員于1999年在論壇上發布一款叫"MyIE"的瀏覽器,基于IE,但采用多窗口瀏覽,占用系統資源比IE6少很多,且有鼠標手勢、視覺化書簽等功能。后來“暢游”這個人就消失不見了,MyIE版本到3.2版本后就再也沒有更新過。MyIE代碼停更后,有很多程序員接起了MyIE的開發工作。不過因為沒有MyIE作者的參與,各自為戰,從而誕生了一大批以MyIE為基礎的瀏覽器,其中最出名的就是MyIE2(后改名Maxthon)、網際暢游(后改名GreenBrowser)和TheWorld(世界之窗)了。
MyIE2后來改名叫Maxthon,即今天的傲游。老板叫陳明杰,jeff Chen,獨立開發MyIE2,然后回國創業,拉起了傲游公司,直到今天。傲游走的是高大全路線,一直以來屬于重型瀏覽器——當然,重型不等于速度慢,只是外表看起來功能齊備而復雜,實際上對于粉絲來說這款瀏覽器當屬靈敏與全能兼備的沖浪利器。
GreenBrowser比較可惜,走的是小巧路線,當然功能也不算少,而且不用安裝,后來無聲息了。
TheWorld就更可惜了,由鳳凰工作室研發。后來被360安全瀏覽器收購了。360買下后,仍然允許鳳凰工作室繼續研發。再后來就是Chromium內核:世界之窗極速版、360極速瀏覽器,發展到世界之窗6的時候,360就不讓鳳凰工作室繼續研發世界之窗了。于是就有了這個國內占有率極高的360極速瀏覽器。而世界之窗6停留在了14年,鳳凰工作室轉而研發Android上的星塵瀏覽器,以及基于Android x86的鳳凰系統了。
TT 瀏覽器,騰訊的,后來改為QQ瀏覽器了(知名度僅次于360瀏覽器)。
獵豹瀏覽器,付盛接手金山網絡后的一個力作,拿chromium改的,但是在包裝上做足了文章。
淘寶瀏覽器神馬的就不說了......
所以,將MyIE稱為今日國產瀏覽器的鼻祖是不為過的。而且MyIE最大的貢獻就是多標簽!
悲催的遨游
遨游是極少數支持全平臺(Android手機/平板, Mac, iPhone/iPad, Windows Phone 和 Linux)的瀏覽器,一直堅持底層開發,連續獲得三次CNETWebware100大獎,“雙核瀏覽”概念也是遨游在2010年首次提出的,即一個瀏覽器擁有Webkit+IE兩個內核,用戶可以快捷切換。但是傲游以為這是自己的獨門絕技,別人學不來……然而悲催的是幾乎沒過幾天搜狗瀏覽器早先發布了正式版,推出了國內第一款雙核瀏覽器——搜狗高速瀏覽器,核心是“IE+Chrome”。呵呵......但是,不得不說搜狗在執行“多核”戰略上非常徹底,甚至干脆直接改名為“高速瀏覽器”,以表決心。并且,在雙核共融方面,搜狗瀏覽器走在了前列,其獨家實現了WebKit和IE內核的無縫融合和切換,兩個內核可共用瀏覽器的所有功能、共享所有數據,并且在內核切換時不丟失登錄,相當于站在了谷歌的肩膀上。360則不著急,等大家都把IE打的媽媽都不認識的時候,直接把Chrome改了一個360極速瀏覽器……后來“雙核”也幾乎成了國產瀏覽器的標配,騰訊的 QQ 瀏覽器,百度瀏覽器等等都是如此,而且現在都是IE+Blink雙內核了。所以,遨游的“雙核”也就不再成為核心競爭力,反而因為要維護自主開發的webkit內核,變得步履緩慢,再加上有全球的開發者為chrome web store開發chrome插件,這些插件可以直接用在chromium引擎上,基于chromium的其他國產瀏覽器可以不費力氣的利用了這個瀏覽器插件市場,由此看來遨游的未來堪憂,此處再次感慨世事變幻莫測,一聲長嘆。不過還是要向前輩致敬,比如像鼠標手勢,同步收藏等最早就是在遨游上看到的,只是運氣不好而已。
pc瀏覽器內核時間線
- 1997年 Trident
- 1998年 KHTML
- 2000年 Gecko
- 2001年 WebKit
- 2003年 Presto
- 2008年 Chromium
- 2010年 混合引擎(雙核)
- 2013年 Blink
- 2015年 EdgeHtml
關于瀏覽器內核百度百科介紹的非常詳細不再詳述。
關于移動端瀏覽器
移動端的瀏覽器內核主要說的是系統內置瀏覽器的內核。
主要是:webkit、chromium、blink、trident、u3、x5
由于智能移動端發展歷史相對于 pc 很短,所以 ie、opera這些元老級瀏覽器內核很少見,移動端瀏覽器大都是從webkit開始的,2005年,諾基亞公司的S60團隊成為手機端WebKit的先驅,他們將WebKit框架移植到了Symbian S60平臺,作為S60第三版的瀏覽器內核。2007年6月29日,iPhone上市,WebKit通過Safari瀏覽器進入iOS平臺,而且立即成為當時iOS平臺唯一的排版引擎。 2008年10月22日Chrome Lite瀏覽器內置在android中。所有的智能手機清一色的選擇了webkit,也證明了KDE和蘋果公司對webkit的貢獻很大。有趣的事情在android操作系統中發生了,android原生網頁視圖WebView也是基于Webkit,chrome瀏覽器開發團隊當初聽取android開發團隊的意見也選擇了webkit,個人覺得當時他們就商量好了,那就是chrome后續開發的成果會用在android上。所以直到android 4.4為止,android上的webview組件都被人吐槽,速度慢、排版差,不得已第三方手機瀏覽器紛紛研發內核。騰訊的x5,UC的U3都是當時的迭代品。而同時chrome則一路高歌不斷占領瀏覽器市場,期間chrome Lite只是作為android的內置瀏覽器,2013年9月android發布的android4.4終于把原本基于Android WebKit的WebView實現換成基于Chromium的WebView實現,從此基于Chromium的WebView實現成為了Android系統上的缺省實現方式。如果chromium用新的內核blink,android自然也會跟進,而最終chrome os和android會走在一起,不分你我。除此外的Windows Phone 8 系統瀏覽器內核則采用的是 Trident,但現已經沒有聲音了。
國內的手機端瀏覽器必須要提 UC 的U3內核和騰訊 QQ 的x5內核了,UC從非智能機開始就存在了,當之無愧最好用的移動瀏覽器。然而進入移動時代……UC反應慢了點,加上各種奇怪的APP都蜂擁而入,移動瀏覽器市場已經亂成了一鍋粥。這鍋粥里第一個炸開的米粒是海豚瀏覽器,號稱硅谷華人創業團隊,什么創新思維,高估值之類……但也沒亂用,最后拼的都是一個字——錢。自從 UC認了馬云干爸爸之后,就活過來了,現在移動端占有率依然很高, 而現在的 QQ 瀏覽器借助流量入口微信也算是很成功了。除此外手機百度、QQ 瀏覽器、360、搜狗、獵豹表現都不錯。
瀏覽器的未來
瀏覽器內核是否會統一?
別想了,洗洗睡吧。
瀏覽器內核是否會跟進web技術?
盡管不會統一,但他們都會支持web新技術、也會隨著硬件發展而不斷優化,不會再出現IE時代的悲劇了。
主要會有哪幾個瀏覽器內核?
- google、opera擁抱的blink
- 蘋果公司擁抱的webkit
- 微軟的edgehtml
- 火狐的servo
參考資料:
《Code Rush》奔騰的代碼【視頻】
瀏覽器野史 UserAgent列傳(上)
瀏覽器野史 UserAgent列傳(下)
瀏覽器歷史
瀏覽器大全-維基百科
瀏覽器內核-維基百科
瀏覽器內核
Mozilla瀏覽器
火狐的未來:既不會死,也不會活的很漂亮
WebKit
都用WebKit也并不意味Web的統一:WebKit的前世今生
歷史在重演:從 KHTML 到 WebKit,再到 Blink
走向開放的移動 Web——寫在騰訊 X5 內核開放之時