Chrome是如何成功的?

1 評論 7089 瀏覽 10 收藏 20 分鐘

幾乎所有JavaScript開發(fā)者每天都在使用Chrome,大家知道它是如何成為瀏覽器霸主的嗎?

Google為什么要做瀏覽器?

其實,Google的聯(lián)合創(chuàng)始人Larry Page和Sergey Brin早在2001年就想做瀏覽器,但是當時的CEO施密特一直反對,因為從頭開發(fā)一個瀏覽器的成本太高了,不是一個創(chuàng)業(yè)公司可以承受的。

因此,Google直到2006年,公司已經(jīng)上市2年了,才開始做瀏覽器,秘密開發(fā)了2年,Chrome才正式發(fā)布。

Google真正開始開發(fā)Chrome是2006年,當時IE的市場占有率高達80%,F(xiàn)irefox大概是10%。

自從擊敗Netscape之后,IE似乎可以高枕無憂了。如果那時候有人要做一個瀏覽器,大多數(shù)人都會質(zhì)疑,還需要多個瀏覽器干嘛?IE和Firefox又不是不能用。

但是,2006年時的Web早已經(jīng)不再是簡單的靜態(tài)頁面,Gmail、Youtube、Google Maps,F(xiàn)acebook這些復雜的Web應用已經(jīng)出現(xiàn)一段時間了,傳統(tǒng)瀏覽器在架構(gòu)、性能以及穩(wěn)定性上已經(jīng)逐漸不再適用了,這時正是需要一款更加強大的瀏覽器來滿足用戶與Web開發(fā)者的需求。

Google所做的最重要的事情,就是對成千上萬的網(wǎng)頁進行排序,所以它存在的意義是基于網(wǎng)頁的。

而一個更快、更好的瀏覽器,可以促進Web技術(shù)的發(fā)展,網(wǎng)頁會越來越多,越來越好,用戶花在Web上的時間越來越多,這對Google是有益。因此,Google要做瀏覽器,不只是想要一個搜索入口那么簡單。

Google希望通過Chrome瀏覽器來促進Web技術(shù)的發(fā)展,從而讓自己受益,這也不是什么秘密,Chrome團隊的人都是這么說的,Google現(xiàn)在的CEO是Sundar Pichai,他當年發(fā)布Chrome的時候是這樣說的:

We hope to collaborate with the entire community to help drive the web forward.

這樣假大空的話當年大概沒幾個人相信,但是這不重要,重要的是Google真的做到了,Chrome確實推動了Web技術(shù)的發(fā)展。沒有Chrome的話,現(xiàn)在的Web技術(shù)大概確實得落后不少。

如果Google只是想要一個搜索入口,它可以收購一個瀏覽器,或者基于開源瀏覽器套一個殼,做一下賬戶系統(tǒng)就夠了,再通過Google網(wǎng)站進行推廣。

國內(nèi)各個大廠的瀏覽器都是基于Chrome的開源版本Chromium實現(xiàn)的,某個瀏覽器甚至直接打包了Chrome的安裝包。

既然Google想做的事情是推動Web技術(shù)發(fā)展,如果沿用舊的思想和技術(shù)的話,顯然是做不到的。于是,他們設計了一個多進程的瀏覽器架構(gòu),重新寫了一個性能彪悍的JavaScript引擎V8,后來又基于Webkit做了一個新的渲染引擎Blink。

不妨這樣說,Google與國內(nèi)的搜索引擎巨頭們的還差一個Chrome瀏覽器。后者看到的是搜索流量帶來的商業(yè)價值以及重新開發(fā)一個瀏覽器的巨大成本,而前者看到了Web技術(shù)發(fā)展對搜索引擎本身的長遠價值。

Chrome就一定能成功嗎?

Google終于決定做瀏覽器了,但這事能不能做成,其實也不一定。和每一個大公司一樣,Google失敗的項目遠遠多于成功的項目,大家不妨看看Killed by Google里面的列表。

Google確實有很多非常成功的產(chǎn)品,比如Android,Youtube,Google Maps,DeepMind,但是它們其實都是收購來的。Chrome算是Google為數(shù)不多的真正從零開始打造出來的產(chǎn)品。

下面這張圖是Chrome發(fā)布時的照片:

圖片來源:Niall Kennedy

照片中從左至右是Larry Page, Brian Rakowski, Sundar Pichai, Sergey Brin, Darin Fisher, Lars Bak和Ben Goodger,他們都是Chrome瀏覽器最關(guān)鍵人物,也都因為Chrome的成功而收益不菲。

  • Larry Page和Sergey Brin是Google的創(chuàng)始人,他們一直希望做瀏覽器;
  • Sundar Pichai當時是Google負責產(chǎn)品的副總裁,Chrome也在他的管理范圍之類,現(xiàn)在他是Google的CEO;
  • Brian Rakowski當時是Chrome的產(chǎn)品經(jīng)理,現(xiàn)在是Google負責產(chǎn)品的副總裁;
  • Lars Bak是JavaScript引擎V8的負責人,曾長期從事編程語言的虛擬機開發(fā)工作;
  • Darin Fisher是Chrome最早期的開發(fā)者,之前是Firefox的工程師,現(xiàn)在是Google負責Chrome的副總裁;
  • Ben Goodger是Chrome最早期的開發(fā)者,之前是Firefox的工程師,現(xiàn)在的職級為Distinguished Engineer,僅次于Google Fellow以及Senior Google Fellow;

照片中大家都挺開心的,秘密開發(fā)了2年的Chrome終于發(fā)布了,但是他們能想到10年后Chrome可以占有接近70%的市場份額嗎?

下圖是2009年到2019年瀏覽器的市場份額變化,Chrome一路飆升,而一度壟斷市場的IE則剛好相反:

圖片來源:Visual Capitalist

不妨對比一下1994年到2008年的瀏覽器市場份額,IE通過免費捆綁Windows把Netscape整垮了,巔峰時期的市場占有率高達96%:

圖片來源:Wired

瀏覽器一直是一個硝煙四起的戰(zhàn)場,因此瀏覽器市場份額的變化多少有點戲劇性。

Chrome為什么會成功?

Chrome為什么會這么成功呢?Google創(chuàng)始人Larry Page是這樣說的:

Chrome has hundreds of millions of happy users and is growing fast thanks to its speed, simplicity and security.

Chrome很快,很簡單,也很安全,所以它成功了,這是Page的觀點。

真的是這樣嗎?

其實也差不多,不過還少了一點,stability,即穩(wěn)定性。Chrome的產(chǎn)品哲學是一共是4個S:Speed, Security, Stability以及Simplicity。其實,這4個S適用于所有互聯(lián)網(wǎng)產(chǎn)品,要做到話也不是那么容易。

說人話,Chrome究竟有哪些不一樣呢?

  1. 簡潔的用戶界面(Simplicity)
  2. 多進程架構(gòu)(Stability, Speed, Security)
  3. JavaScript引擎V8(Speed)
  4. 渲染引擎Blink(Speed)

用戶界面的Simplicity其實不難做到,現(xiàn)在很多瀏覽器和Chrome看起來也差不多,只是Chrome率先簡化了瀏覽器的界面。

這類似于iPhone發(fā)布之后,大家明白了一個簡單的道理,原來手機只需要一塊屏幕就夠了,不需要那么多按鍵,后來所有智能手機基本上都長得一樣了…

多進程架構(gòu)、V8引擎以及Blink引擎都是非常硬核的技術(shù),不是一般開發(fā)者可以做到的,就算是現(xiàn)在也很少有人或者公司去嘗試做這個,所以現(xiàn)在國內(nèi)外很多瀏覽器都是基于Chromium實現(xiàn)的。

我想大家心里都清楚,要想這3點上超越Chrome,可能性非常小。

Blink渲染引擎的優(yōu)化對提高Web性能也至關(guān)重要,只是Chrome剛開始用的是Webkit,我會在以后的博客中詳細介紹Blink。

當然,Chrome所做的創(chuàng)新遠不只這么多,我列舉的4點是Chrome成功最關(guān)鍵的要素。

簡潔的用戶界面

Chrome已經(jīng)發(fā)布10多年了,但是它的界面其實沒怎么變過:后退圖標,前進圖標,刷新圖標,合并的地址欄與搜索框,書簽圖標,登陸圖標,設置圖標……Chrome的界面非常簡潔,沒有任何多余的元素。

2009年的Chrome是這樣的:

圖片來源:Gmail in 30 seconds

2019年的Chrome是這樣的:

Chrome發(fā)布時,IE8也差不多在同一時期發(fā)布,但是它的界面就沒那么簡潔了:

通常,用戶應該不會去點擊“頁面”、“安全”、“工具”等選項,其實它們完全可以隱藏起來。Chrome的很多選項都是隱藏在設置選項里面,其實更加科學。

Chrome是第一個將地址欄與搜索框合并的瀏覽器,合并的框被稱為Omnibox,用戶既可以輸入地址,也可以搜索關(guān)鍵字。當用戶輸入時,Chrome還會進行實時推薦用戶可能要訪問的網(wǎng)頁。

Chrome還把書簽欄給隱藏了,這對于重度書簽用戶(比如我)來說帶來一些不便,但是這也讓界面又簡潔了很多。

很多瀏覽器的書簽欄不僅沒有隱藏,還會添加很多莫名其妙的默認書簽,甚至很多軟件安裝時也會給瀏覽器添加一些書簽,而這些書簽其實很多用戶都不會訪問。

合并地址欄和搜索框,隱藏書簽欄,這樣做不只是讓用戶界面更加簡潔,還可以培養(yǎng)用戶的搜索習慣,讓用戶不在需要記住特定的網(wǎng)站。

Chrome與IE8的Tab位置是不一樣的,Chrome的Tab在上面,而IE8的Tab在下面,這個區(qū)別似乎沒那么重要,不過也沒那么簡單。Tab是Chrome用戶界面最重要的元素,每一個Tab使用獨立的進程,Tab可以拖拽出來作為獨立的窗口,相當于一個獨立的應用。

Chrome的設計哲學是”Content, not Chrome”,因此它們Tab置頂,把一切可以省略的東西都去掉,比如搜索框、狀態(tài)欄、書簽欄以及各種設置的快捷方式,盡量讓每一個Tab看起來像一個獨立的應用:郵件、視頻、社交或者購物等,不要讓多余的瀏覽器元素影響用戶體驗,讓用戶專注于Web應用本身,讓Web應用越來越重要,這不不正是Google的陽謀嗎?

Chrome的產(chǎn)品哲學與iPhone以及微信本質(zhì)是一樣的,都是極簡主義,這個地球人都知道,但是沒有多少產(chǎn)品可以真正做到。為什么呢?因為要做到極簡主義,需要深刻思考用戶需求以及產(chǎn)品價值

多進程架構(gòu)

Chrome的每一個Tab和插件,都使用獨立的進程。這樣可以提高瀏覽器的性能、安全性以及穩(wěn)定性

  • 充分利用多核CPU,不同的進程可以使用不同的CPU核運行;
  • 便于限制Tab與插件進程的權(quán)限,減少安全隱患;
  • 當某一個Tab的頁面崩潰了,不會導致其他Tab崩潰,整個瀏覽器還可以正常使用;

多進程架構(gòu)借鑒了現(xiàn)代操作系統(tǒng)的設計思想,瀏覽器不再是一個簡單的應用,它是一個平臺,可以用于獨立運行各種各樣的Web應用。

使用Chrome的任務管理器,可以查看每一個Tab和插件進程所使用的CPU、內(nèi)存已經(jīng)網(wǎng)絡。這樣可以幫助Web開發(fā)者優(yōu)化代碼,高效利用計算機資源。

既然多進程架構(gòu)有這么多好處,那為什么以前的瀏覽器采用單進程架構(gòu)呢?因為IE、Firefox等瀏覽器誕生時,Web還非常簡單,大多是靜態(tài)頁面,單進程就夠用了,而且當年也沒有什么多核CPU。

從單進程架構(gòu)切換到多進程架構(gòu)是一個非常復雜的過程,F(xiàn)irefox從2009年到2017年花了整整8年時間才完成切換。

從這一點來說,F(xiàn)irefox落后了Chrome接近10年。這倒不是因為Chrome的工程師特別厲害,而是因為Chrome從一開始就設計了多進程架構(gòu),沒有什么技術(shù)債。

JavaScript引擎V8

Chrome的性能優(yōu)異,很大程度上要歸功于他們的重新的開發(fā)的JavaScript引擎V8。V8引擎可以將JS代碼編譯為高效的匯編代碼,同時還要負責執(zhí)行代碼、分配內(nèi)存以及垃圾回收。

V8引擎的命名靈感來自超級性能車的V8引擎,敢于這樣命名確實需要一些實力,它性能確實一直在穩(wěn)步提高,下面是使用Speedometer benchmark的測試結(jié)果:

圖片來源:https://v8.dev

JavaScript是動態(tài)的,且沒有類型,這會給V8引擎編譯JS代碼時帶來很多麻煩。不過V8引擎可以記錄代碼第一次執(zhí)行時的類型信息,當代碼第二次執(zhí)行時,則可以根據(jù)記錄的類型信息生成優(yōu)化的匯編代碼。

另外,V8引擎還會為Object生成動態(tài)的hidden class,用來記錄Object的結(jié)構(gòu),以提高屬性的訪問速度。

V8引擎的垃圾回收算法也非常強大,可以大幅減少內(nèi)存使用。最近有人對比了一下3中不同類型的JS引擎JavaScriptCore、Hermes以及V8在React Native應用中的內(nèi)存使用情況,發(fā)現(xiàn)V8的內(nèi)存使用量明顯低于其他引擎,且非常平穩(wěn):

圖片來源:Bhaskar gyan vardhan

V8引擎不只是讓Chrome變快,它也讓JavaScript變得更加強大,讓JavaScript生態(tài)系統(tǒng)變得異常繁榮。Node.js也是基于V8引擎的,因為有Node.js,才有了數(shù)量龐大的NPM模塊,才有了各種各樣的JavaScript開發(fā)框架和工具。

Chrome會成為下一個IE嗎?

也許是樹大招風,最近批評Chrome的聲音越來越多了,有人甚至說Chrome會成為下一個IE6。個人覺得這個有點危言聳聽。

Chrome從一開始就是開源的,”Talk is cheap, show me the code”,如果實在對Chrome有啥特別不爽的地方,其實可以去改代碼,或者fork一個更好的版本。

Chrome從一直是尊重技術(shù)標準的,它在發(fā)布的時候就通過了Acid測試,更重要的是,它一直在推動HTML5、CSS、ECMAScript、HTTPS, HTTP/2, WebAssembly, Service Workers, Source Map等Web相關(guān)技術(shù)標準的發(fā)展,大家可以在各個標準提案中看到Google工程師的身影。

有人說Google工程師最大的問題就是喜歡提新的技術(shù)標準,但是有標準比沒有標準要好太多了,國內(nèi)各個大廠小程序做了快3年了,至今連個標準都沒有,各玩各的,這樣做導致整個小程序行業(yè)一起加班,一起重復勞動。

最嚴重的問題在于,沒有標準會制約小程序的進一步發(fā)展,大家無法給用戶提供最好的產(chǎn)品。

開放繁榮的Web符合Google的長遠利益,因為Google是靠Web廣告賺錢的;但是Web對于Microsoft來說一直就沒有太大商業(yè)價值,因為Microsoft賣的是操作系統(tǒng);按照吳軍老師的基因論,IE之所以失敗是Microsoft的基因決定的,而Google的基因決定了它必須把Chrome做好。

從目前的情況來看,Chrome依然會保持簡潔的界面,性能也會一直提高,這樣的話,用戶和開發(fā)者也沒有多少動力去換瀏覽器。我已經(jīng)用了7年Chrome了,未來還會繼續(xù)用下去,那你呢?

大家還有啥不太清楚的地方?不妨留言一下,我可以研究一下,然后再與大家分享。我是Fundebug的技術(shù)負責人,一個對JS又愛又恨的程序員。

#參考#

 

作者:Fundebug的技術(shù)總監(jiān),歡迎添加微信交流:KiwenLau

本文由 @Fundebug 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 牛逼的谷歌

    來自浙江 回復