2014 年 7 月前後,瀏覽器使用 Chromium 35 內核的技術難度很大嗎?

7月21日,UC瀏覽器電腦版2.0發布,該版本最大的變化是瀏覽器內核採用了Chromium 35。目前,Chrome是Chromium 36內核,國內大部分瀏覽器均處於Chromium 32階段或以下。

UC瀏覽器電腦版官方 稱此項技術突破至少領先國內一年,這是真的么?從技術角度看,基於Chromium開源項目的瀏覽器,突破Chromium 35難度高么?所面臨的最大挑戰有哪些?


看截圖

UC宣稱自己的內核是基於Chromium 35的,為何上面的截圖顯示仍是舊的架構呢?Google Chrome 32 時雖然全面啟用了Aura架構,但是在Chromium開源項目的代碼中,在32版本時,仍然保留著舊架構的代碼,開發者可以通過編譯選項選擇不啟用Aura,這樣就很容易將內核升級到Chromium 32以上 ; 但是這樣的內核升級有一些問題,比如Google不保證繼續維護非Aura引擎的代碼,這樣非Aura引擎中的代碼的Bug或者漏洞,就不會有人去解決,風險是很大的。

比如在UC瀏覽器地址欄輸入chrome://gpu並回車,所顯示的頁面中,很多圖形優化特性都失效了,這可能就是不啟用Aura的損失。這種沒有與Google Chrome保持一致的升級方式,是否能算作真正的Chromium 35內核,就仁者見仁、智者見智了。


有這功夫斗版本號,不如幫Chrome team修幾個bug……


剛問了我們技術童鞋(技術大神,他們的瀏覽器也突破到了M34),他也覺得這次UC瀏覽器電腦版團隊的確挺牛,也說了一些難點。我轉述下吧,有不對的地方,還望大家評論指正。

1.
Aura
引擎的實現難度比較大

今年1月份的時候,Chrome 32正式發布,但時間已經過了四個月,國內的瀏覽器廠商還沒有跟進的。按照以前的經驗,國內瀏覽器廠商一般都會在30天內跟進到新的內核,但M32這次,確實沒有。

說明了一個什麼問題?當時cnbeta有一篇文章《為什麼眾多外殼瀏覽器的內核都止步在Chromium 32 到底發生了什麼》,它就說到了一個原因:

Chromium 32相對於Chromium 31,最大的架構上的變化應該是全面啟用了Aura引擎。Aura 是
Google2011年6月份的時候推出的適用於 Chrome 和 Chrome OS 的新一代窗口管理器,將會是 Chrome 發展的下一個里程碑。它被定位在 Chrome 的新的加速用戶界面框架,旨在提供更豐富的視覺效果,大型動畫過渡和其他只能由硬體加速產生的效果。現在的 Aura UI要集中考慮實現硬體平台的兼容性。有趣的是 Mozilla採用了類似的做法,他們將在其瀏覽器未來版本中刪除 GTK,這體現出瀏覽器發展的一種趨勢。

Aura引擎會對瀏覽器廠商的開發有什麼影響呢?粗略分析大概有以下幾點:

a. 新的桌面窗口結構,需要廠商全部重新調整應用程序頂端架構;

b. 國內廠商大多是雙核瀏覽器,Aura引擎的介入,使得雙核在協調上出現障礙;

c. 國內廠商加入太多自製的交互元素,這些交互元素需要針對Aura引擎重新設計開發;

有過軟體項目經驗的朋友應該能從上述三點看出這個Aura引擎,對第三方瀏覽器的開發造成了多大的麻煩,上述三點的工作量估計,沒有幾個月至半年是不夠的,並且前提是要有對架構把握很好的技術人員來操作。其實Google在很早就開始對Chromium使用Aura,只是一直處於小範圍功能的嘗試,這次Chromium 32全面啟用Aura引擎,從Google方面來說,並不是什麼意料之外的事情。

顯然,在此看來,國內的廠商未能突破Chrome
32,面臨的技術難題正是這個Aura引擎。所以,也很容易理解,為什麼目前除了UC瀏覽器,國內大部分瀏覽器均還處於題主說的處於Chromium 32階段或以下。

2.很多廠商忽視Chromium的軟體架構

內核升級最大的一個彎路在於忽視Chromium的軟體架構。同事說,他們曾經也犯過這樣的錯,結果使得各工程師在修改代碼和增加文件時很混亂,程序的可維護性很差。這一痛苦經歷讓團隊深刻地認識到維護清晰的軟體架構是多麼重要。所以,目前他們整個團隊在日常工作中都非常重視這一點,日常工作中對這類問題的敏感度很高。

3.容易「重新發明輪子」

在進行軟體功能開發時,工程師很容易一拿到需求就根據自己的理解立馬上手開干,以至於做了不少「重新發明輪子」的事。其實,所需實現功能依賴的不少基礎模塊Chromium項目中已有,在瀏覽器的開發過程中,應該不斷地將「自己發明的輪」子給去除,用Chromium項目中現成的取而代之。

這種做事方法表面上看起來慢了,因為要花時間去學習和研究,但長遠看來利大於弊,除了通過該方法能不斷加深對Chromium項目的熟悉外,這一方法還有助於內核的快速升級。

4.
軟體設計的解耦方法需要巧妙

很多技術團隊所採用的解耦方法一是很難規範化,二是很難與Chromium的新內核進行合併。

所以,你的解耦方法除了規範化很簡單外,還需要在合併過程中對於各衝突點總是存在一個「明亮的燈塔」,讓合併工作更加明了。我們技術童鞋所採用的解耦方法很簡單,用一句話總結的話是「無論在Chromium之上是增加、調整或去除功能,我們在代碼層面總是做加法」。


怎麼說呢,,排名第一的回答里引用文章的作者,就是七星瀏覽器的開發者

七星瀏覽器三月份就已經突破M32的Aura限制,昨天更是開始了M36的內測(都是Aura架構)。結合著七星瀏覽器只是名不見經傳的個人項目,可見UC所謂的突破也不過如此嘛

PS:七星開發者貌似在Q群里也說過,UC不是真Aura,而七星是完整開啟的

PS2:我再轉一個七星瀏覽器官人的文章

七星架構師暢談Chromium 36

  -----------基於Chromium 36內核的七星瀏覽器是怎樣煉成的

  2014年7月28日,七星工作室發布了採用 Chromium 36穩定版內核的七星瀏覽器1.36.0。本文來自於七星工作室架構師,詳述了基於Chromium 36的七星瀏覽器製作的心路歷程。

  七星瀏覽器從面世之初,也就是2014年2月份的時候,採用Chromium 32穩定版的七星瀏覽器1.32.1正式版發布了,這是當時國內唯一的基於Chromium 32內核的瀏覽器,從全球來講,也是唯一一個採用Chromium 32內核作為極速的內核的雙核瀏覽器。五個多月過去,2014年7月28日,基於Chromium 36穩定版的七星瀏覽器1.36.0,又是率先打破僵局,成為全國首個採用Chromium 36穩定版內核的瀏覽器。在這五個月當中,七星瀏覽器發布了數個版本,經歷了從Chromium 32穩定版一步一步跟進到Chromium 36穩定版的艱辛過程,每一次都是國內首家跟進最新穩定版Chromium的瀏覽器。2014年Chrome與七星瀏覽器更新時間軸:

  對於國內的其他瀏覽器廠商,如此快節奏的跟進幾乎是無法想像的,更多瀏覽器產品採用了跳級的策略,來減小更新內核的難度與工作量。這樣做對於廠商自己來說固然可以降低成本和風險,但是缺憾就是無法使自己的用戶及時體驗到新內核更新的功能和更好的性能。

  有人可能會以為,新版本的Chrome沒有舊版本的好,所以廠商們才不升級。其實不然,從Chromium社區的反饋上來看,性能、安全性上的進步都是很大的。Chrome 32加強了對未知來源擴展的安裝的限制,Chrome 33提高了對插件執行的驗證門檻,Chrome35也帶來23個安全修補程序,這些改動,都進一步增強了安全性;Chrome 34優化了界面圖形引擎,提高了軟體交互性能。另外Google作為一家全球領先的科技公司,其開發流程是非常嚴謹的,一個版本從進入開發分支到發布,中間會經歷至少3 - 4個月的迭代期,期間每次Build還會自動執行大量的Unit Tests,可以說,一個正式發布的版本出現大問題的可能性是很小的。

  從各大廠商的反應來看,有競爭意識且有技術實力的,已經成功的跟進了Chromium 34或35,並正在向Chromium 36邁進,其他未跟進的廠商要麼是對於瀏覽器競爭壓力認識不足,要麼是技術上短時間難以突破。

  之前有網友問起過,我們是基於Chrome還是基於Chromium的,其實兩種說法都沒有問題。那麼Chrome和Chromium有什麼區別和聯繫呢?七星瀏覽器又是如何確定自己應該跟進哪一個版本的Chromium呢?

  Chromium是谷歌主導的一個開源項目,其主要目的就是為了服務Chrome,Chrome可以看作是Chromium的谷歌官方編譯版本,七星瀏覽器可以看作Chromium項目一個第三方編譯版本。Chrome穩定版是從Chromium開發過程中挑選的出來的一個相對較穩定的版本編譯而來的,七星瀏覽器也是取和Chrome穩定版相同版本號的Chromium進行合併和編譯的,版本選擇上基於Chrome穩定版,源碼上基於Chromium。正是因為有了Chromium開源項目這樣一個堅固的基石,才有了七星瀏覽器這樣好用的產品,如牛頓所說,如果說七星瀏覽器比其他的好用些,那是因為它站在巨人的肩膀上。七星瀏覽器從Chromium項目中獲取的V8引擎、PPAPI、Aura和GPU等各種優秀的技術和成果,這些功勞都是Chromium項目的,七星瀏覽器不會把這些功勞的帽子帶在自己頭上。在此再次感謝Chromium開源項目和所有為七星瀏覽器做出貢獻的熱心用戶。

  前幾天有網友提出這樣的疑問,有其他瀏覽器廠商說他們是首家採用Chromium 35內核的雙核瀏覽器,你們也自稱是首家採用Chromium 35內核的雙核瀏覽器,到底哪一個對呢?這個問題,其實只要看發布日期就可以了,七星瀏覽器基於Chromium 35內核的版本最早是2014年6月11日發布的1.35.0內測版,並於2014年6月26日發布了1.35.1正式版,這已經是上個月的事情了。

  還有人問,實時跟進Chromium 項目發展不累嗎?七星團隊的回答是:當然累,但是Chromium項目作為全球首屈一指的大型開源項目,每天都會產生大量的補丁與內容修復,或許是性能、安全甚至架構上的優化,或許是影響穩定性的問題修復,國內瀏覽器廠商的產品有義務讓國內的用戶第一時間享受到Chromium項目帶來的安全與便利。所以對此問題,我們的態度始終是以用戶體驗為第一追求,力爭以最短時間同步Chromium社區的動態。快速跟進穩定版,使得用戶儘早享受到這些益處。

  從軟體研發的的角度講,實時跟進雖然會讓團隊比較辛苦,但帶給我們的益處也是很多的:

  1、實時掌握Chromium社區動態,跟進業內最新架構思想,及時優化架構,改進性能;

  2、借力於Chromium社區,及時修復系統漏洞,一個漏洞如果晚一個月修復,可能會對用戶造成巨大損失;

  3、Google對Webkit建立Blink分支之後,就開始快速的對Blink進行優化改進,及時跟進內核,使我們可以看到Chromium開發者對Blink內核的思考,對提升我們團隊的技術實力是非常有益處的。

  羅馬不是一天建成的,七星工作室能夠做到對Chromium項目了解的如此深入,也不是一蹴而就的。

  七星工作室自從在Chromium基礎上建立分支以來,對於如何管理新增代碼與內核代碼,如何處理私有特性與Chromium基礎特性的關係,一直沒有停止思考,也一直在努力實踐。

  這其中孕育出很多具有七星特色的技術架構與思想,我們也很高興的看到,現在已經有國內廠商初步跟上了七星瀏覽器項目初期思想及方式的步伐。

  七星瀏覽器項目早期,我們就很自然的制定了增量式開發規範,以便於在修改代碼的同時,盡量少的影響Chromium項目本身。最近已經有一些瀏覽器廠商開始意識到這樣做的好處了,但是對我們來講,這樣設計其實是團隊經驗的自然產物,並沒有什麼高明以及可炫耀之處。

  七星瀏覽器項目進展到現在,我們已經告別了上述採用代碼嵌入形式的原始階段,在項目架構上發展到了全新的第二階段,這個階段的特徵可以總結為:超低耦合,獨立測試,性能ADM模型。這三個特徵的優點簡單來說:

  超低耦合:代碼耦合度、冗餘度極低,便於內核更新與升級;

  獨立測試:各模塊獨立自動化測試,介面快速驗證,降低低級Bug產生機率;

  性能ADM:新功能的代碼對Chromium內核性能的干擾更小,風險更低;

  七星團隊並沒有固步自封,依舊探索著更好的方式,已經形成了初步的DSCA設計構想,並在實驗中進行了驗證。

  對於上述特徵的具體實現方式,可能說起來就顯得太專業,並且其中蘊含的信息量足夠寫一本技術專著了,我們這裡就不想贅述太多枯燥的技術話題了。

  總之,七星瀏覽器發展至今,凝聚了眾多七星工程師們的辛勤勞動與心血,七星團隊至此的成果積累,可能也是其他廠商短時間內難以企及的,但我們始終沒有忘記,技術永遠為產品服務、為用戶服務,只有根植於產品的土壤之中,優秀的技術才能生根發芽,開出絢麗的花朵,結出豐碩的果實。

  七星團隊就是這樣,不斷將自己的技術實力轉變為誠懇的產品;七星瀏覽器就是這樣,做以用戶為本,以體驗為綱,不斷努力創造著,功能全面而不臃腫,性能出色而不閹割,更貼心,更順手,更好用的瀏覽器產品。

  本文轉載自其它媒體,轉載目的在於傳遞更多信息,並不代表本網贊同其觀點和對其真實性負責。


呵呵 自吹自擂?將近一個月前七星瀏覽器就是35內核了 昨天七星內測版都升級到36內核了 我現在打這段回答用的就是36版的


我就想知道普通用戶體驗有什麼區別?⊙﹏⊙


啊,居然不跟 UCMobile 的 U3 內核一樣是自主研發。

首個中國自主研發瀏覽器內核U3面世 http://gzdaily.dayoo.com/html/2011-06/15/content_1384702.htm


說白了就是這些人基於新的toolkitview暫時還寫不好和原來一樣的外觀...


推薦閱讀:

Chrome底部閃爍,出現html是為什麼?
基於chromium的瀏覽器和chrome有什麼差距?
為什麼電腦的chrome和IE瀏覽器很多網站顯示403forbidden錯誤,但Edge瀏覽器卻正常?
chrome瀏覽器怎麼安裝招商銀行的控制項?
你放棄 Chrome 而選擇 IE 11 的原因是什麼?

TAG:互聯網 | GoogleChrome | 網頁瀏覽器 | UC瀏覽器 | 瀏覽器內核 |