漫畫 | 為什么中國沒有搞出瀏覽器引擎?
注意,是瀏覽器引擎,不是瀏覽器!
瀏覽器引擎主要有兩個功能,一個負責渲染/頁面布局,另外一個是執行JavaScript。
國內搞出的瀏覽器挺多的,不過都是基于外國的開源引擎。 為什么沒有自主的,或者主導的開源引擎呢?
回答這個問題之前,我們先看看瀏覽器引擎的發展歷史,答案就在其中。
1990年夏日的一天,陽光明媚,這對于寒冷的挪威來說,非常難得。
兩個程序員走出辦公室,步入公園,坐在長凳上享受美好的陽光。
他們倆正在用C++開發一個超聲波圖像程序,遇到了一個跨平臺的問題。

這兩個程序員,一個叫做Haavard ,另外一個叫做Eirik , 他們計劃開發框架就是大名鼎鼎的QT 。
經過兩人幾年的辛苦努力,QT于1995年發布了第一個版本。
作為一個跨平臺的GUI框架,QT深受C++程序員的歡迎,被廣泛地應用在汽車、消費電子、醫療、娛樂和工業自動化等領域。
Haavard 和Eirik 不失時機地成立了一個叫做Trolltech的公司,專門開發QT, 并且提供專家咨詢服務。
讓我們把目光再轉向德國,1996年,一個德國大學生Matthias Ettrich在使用Unix桌面時候,覺得非常不爽。

他當然不能從零開始開發,一番調查研究之后,Matthias 發現了QT這個寶藏


Trolltech公司的大力支持讓他下定決心采用QT來開發一個Unix的桌面:KDE

也許是對QT太喜歡了, Matthias在1998年干脆加入了Trolltech公司。
與此同時,Trolltech公司也有很多員工參與到了KDE的開發當中,甚至成為領導者,Trolltech和KDE可真是一對好基友。

在大西洋另一邊的美國,Web已經成為最熱門的發展方向,風起云涌,英雄輩出。
網景率先推出Navigator,拔得頭籌。
微軟不甘落后,搞出了Explorer。
IE靠著和Windows捆綁策略,后來居上,統治了瀏覽器市場。

KDE作為一個桌面環境,自然也不能落伍, 也開發了屬于自己的瀏覽器:Konqueror。
Konqueror(其實是Conqueror,KDE的項目都以K開頭) 從名稱上看就野心勃勃

Konqueror并沒有實現征服,因為Unix/Linux在桌面市場的占有率實在太低了。
但是Konqueror的兩個重要組件:渲染引擎KHTML和JS引擎KJS卻在后來大放異彩。

2001年,蘋果想為自家的Mac OS X開發一個瀏覽器, KHTML和KJS進入了他們的視線。

蘋果的開發人員對KHTML和KJS做了一個分支, 移植到了OS X上,改名為WebCore 和JavaScriptCore。
2003年,喬布斯在Macworld Expo 上正式發布了瀏覽器Safari 和WebCore。

但是KHTML團隊和Apple團隊之間的關系卻日趨緊張

兩個團隊分裂了,開始獨立發展。
2005年,Apple 把WebCore和JavaScriptCore打包到Webkit中,作為一個開源軟件向公眾發布
Webkit 是個優秀的瀏覽器引擎, 小巧、靈活又十分強大。
它率先實現了CSS3和HTML5的功能, 受到業界的喜愛, 圍繞著它有很多瀏覽器發展起來。

Webkit的成功引起了Google的注意,作為一個互聯網領域的巨無霸,它也要占據流量的入口,實現自己的瀏覽器。

不過,Google 對當時的Web有著深刻的洞察力,它認為Web和之前已經完全不同了。

這些在瀏覽器中運行的應用程序基本上都是JavaScript來實現的,JavaScript引擎必須極為強勁才行。

既然JavaScriptCore不能滿足需求,那就自己造一個吧!
當然,布局和渲染引擎還可以用Webkit 的WebCore。

2009年,搭載著WebCore和V8的Chrome問世了, Chrome界面簡潔、穩定, V8引擎極為強勁,引發了下載的狂潮,并迅速成為了瀏覽器的霸主!
此后,Google也fork了Webkit的源碼,并且花了大功夫梳理,使得使得可讀性更好,編譯效率更高,2013年形成了一個新的開源瀏覽器引擎Blink。
這幾個瀏覽器引擎的關系是這樣的。

再加上Firefox的Gecko , 三大瀏覽器引擎正式形成!

當然,我們不能忘了曾經的瀏覽器霸主IE和它的引擎Trident。

終于可以回到文章開頭的問題了:為什么國內的IT巨頭不搞出一個瀏覽器引擎呢?
回顧這些瀏覽器引擎的發展歷史,它們幾乎都起源于90年代, 當時國內軟件業非常薄弱, 錯過了瀏覽器開發的這一波浪潮。
隨著Web標準的不斷發展和完善,瀏覽器引擎也變得極為復雜,代碼量動輒就是千萬行級別,工作量巨大。
瀏覽器引擎需要經年累月的積累,沒法彎道超車。
即使是強如Google、Apple 也都是站在別人的肩膀上,加上自己的創新, 慢慢發展起來的。
國內的互聯網巨頭又專注于商業模式,主要在應用層折騰,對底層技術重視不夠。把別人的瀏覽器引擎拿過來,包裝一下,形成自己的瀏覽器,這是性價比最高的做法。
但是,我們要提出一個問題:當你用了別人的東西,是不是也要做出貢獻呢?有沒有可能自主創新后搞出自己的分支、然后占據主導地位呢?
你看到的只是冰山一角!
如需轉載,請通過作者微信公眾號coderising獲取授權。