評論 > 言論 > 正文

殺器還是噱頭?詳解華為的作業系統

比較谷歌和華為的作業系統,目標雖然相同。但谷歌的系統包含更多的技術創新,而華為的系統着重於工程集成。這反映了兩個公司的區別。谷歌代表的是技術創新。而華為擅長的是工程能力,在技術上繼承和抄襲多,創新少。華為主要是依靠中國人工便宜,加上996,搞人海戰術。集成業界的一些好思路,螞蟻啃骨頭,做到工程實現。但要說是革命性的創新,遠遠談不上。純屬噱頭而已。

華為消費者業務總裁余承東在朋友圈說最快今年秋天,最晚明年春天,華為自己的作業系統(OS)將可能面市。華為的OS打通了手機、電腦、平板、電視、汽車、智能穿戴,統一成一個作業系統。且華為OS還兼容全部的安卓應用和所有的Web應用,相關安卓應用在華為OS上重新編譯後,運行性能提升將超過60%。

據傳這個作業系統叫鴻蒙。鴻蒙本意是中國神話中的在天地開闢之前,一團混沌的元氣世界。很奇怪,為什麼華為的OS叫鴻蒙。等待開闢?還是一團混沌?

余承東別號余大嘴,朋友圈的話算不上正式發佈,雙重不靠譜。

這位老總一定是把作業系統混同於華為宣傳的方舟編譯器了。以前華為宣佈方舟編譯器的終極目標,是推出一個跨平台、跨系統、跨設備多種語言的軟件開發平台。作業系統包括的東東比一個編譯平台多得多。工作量也大得多。能夠跨系統寫應用軟件不等於一統江湖的跨設備的作業系統。

根據現有信息,鴻蒙是一個基於安卓的,集成了華為對安卓系統的既往優化的作業系統,包括EMUI5.0優化,方舟編譯平台, GC優化,EROFS文件系統等等。但主框架仍然脫不了安卓或者Linux的作業系統。由於安卓和Linux都是開放的,這樣做沒有問題。它讓人想起了2014年被收購的紅旗Linux。

當今手機作業系統領域,基本上是蘋果和安卓的二分天下。蘋果是先行者,谷歌是趕超者。先行者有先發優勢。即使不開放,也能佔領很大市場。安卓不同於蘋果系統是它的開放性,它採用了跨平台操作的JAVA語言,支持不同硬件設備,環境對應用開發商開放。蘋果手機使用自己的硬件,嚴格管控應用開發商。蘋果的封閉環境,使它更易於高效,更容易優化,這就是為什麼蘋果手機使用規格較低的硬件還能讓用戶感受流暢的體驗。谷歌為了培養生態系統,採用了開源的安卓,對效率和性能不得不有所犧牲。谷歌的開放,使很多新製造商(包括華為)可以快速進入智能手機領域。也使安卓的應用大量增加。據2017年年底統計,安卓的應用比蘋果多了42%。全球範圍內,安卓用戶佔86%,蘋果用戶佔14%。

手機作業系統的後發者,還有諾基亞的塞班,Palm的Palm OS和微軟的window Phone,都是由於沒有殺手鐧以及生態圈沒做好,慘遭淘汰。

具體來說,安卓系統在兩個性能上落後於蘋果OS。一個是為了跨硬件操作,JAVA使用了虛擬機。功能是將各種硬件抽象成Java的運行環境,JAVA只管虛擬機。而虛擬機負責連接具體硬件。因此Java實現了跨平台——不管是X86,ARM,還是其他CPU的機器都沒有問題。虛擬機里有一個解釋器,將JAVA語言逐句翻譯成硬件懂得的機器碼。而蘋果由於沒有跨平台的問題,事先把整個程序編譯成機器碼,執行起來就快了。另一個瓶頸是安卓需要回收不再使用的內存,這個工作叫garbage collection(GC)。GC時,虛擬機要停止運行,判斷哪些內存不再使用並釋放。這個停頓會造成手機的卡頓。

谷歌和其他安卓手機製造商,也在持續優化安卓,一方面是硬件提升。由於硬件越來越便宜,手機上的CPU增至8核,速度也增加了很多。內存也由幾百M增加到8G。軟件上,谷歌採用了JIT(Just In Time)編譯。當系統發現程序內有一段代碼頻繁執行的時候,下次調用就不用重複解釋,直接執行上次解釋出的機器指令。虛擬機進化到ART(Android Run Time)後,採用了AOT編譯器(Ahead Of Time),就是運行之前,將部分代碼靜態編譯解釋為機器碼,極大地提升了效率。但對於那些Java動態特性的部分,還有其他部分,仍然做不到直接編譯,還是要解釋執行。GC方面谷歌也做了優化,將GC的頻率和時間都減少了。綜合效果是,如果你用的是一個比較新的手機,硬件配置屬於中高端,安卓版本比較新,基本上感覺不到卡頓,運行比較流暢。

當不能得到谷歌GMS授權後,華為如果能很快推出新手機作業系統,而且這個作業系統有革命性的創新,且性能大大領先於現有的安卓,就會成為一個大殺器,挽回流失的用戶。但是作為後發者的華為進入手機作業系統領域,除了為培育生態圈,必須開源之外,還要有一些殺手鐧。方舟編譯器似乎就是是鴻蒙寄予深厚希望的一個殺手鐧。華為宣稱,方舟編譯器可讓系統操作流暢度提升24%,系統響應速度提升44%,第三方應用編譯後流暢度可提升60%!是革命性的優化,全程執行機器碼,高效運行應用,徹底解決安卓應用「邊解釋邊執行」造成的低效率。

根據目前公開的資料。方舟編譯器不再使用Java的虛擬機,而是開發者在應用打包的時候就將所有程序,包括靜態和動態的部分直接編譯成機器指令。這種編譯會帶來跨平台問題,java使用虛擬機解決的正是這個問題。方舟對跨平台問題的解決方法,是同時編譯出所有硬件平台對應的二進制文件,之後在具體手機安裝的時候選擇針對當前硬件平台的二進制裝入手機。因此會出現安裝包容量大的問題(因為安裝包包含所有硬件平台的二進制文件)。導致應用安裝包和安裝後的機器碼佔用空間增大。據估計,方舟編譯器重新編譯的安裝包要比安卓大兩三倍,手機安裝後的機器碼要大0.5-1倍。帶來的問題是佔用存貯和內存顯著增加。用戶下載安裝包會消耗越來越多的時間和流量。這是一個用空間換取運行速度的策略。

方舟編譯器會有嚴重的生態問題。首先華為必須將編譯器代碼開放,並讓應用開發商免費下載,將其已發佈的應用重新編譯,再次對安卓的所有版本和所有硬件平台進行測試。改正Bug後,重新發佈,在所有應用商店上架。這個工作必須讓各個應用開發商自己做,華為不能代勞,因為安全原因,每個應用都要有開發者的簽名。這基本上是一個不可能完成的任務。你可以在愛國情懷下忽悠國內的部分開發者,但不可能讓全球的應用開發者來跟隨。大多數的app開發商是中小規模的,甚至是個人,怎麼可能有時間有精力開發編譯測試如此多的版本?

當新的非華為(高通,聯發科等)硬件平台發佈後,方舟編譯器必須及時跟進,並將新版本推送給所有的開發商。隨着越來越多新硬件的發佈,方舟編譯出的安裝包勢必會越來越大。用戶下載安裝包會消耗越來越多時間和流量。同時開發商編譯時間會越來越長,需要測試的硬件會越來越多。

這麼大的麻煩換取的是最多44%的系統響應速度。而且這個提升很可能是在實驗室特定條件下測得的。體現在用戶感知上,很可能要大打折扣。根據用戶感知測試,一般人對在0.2秒以下的速度提升沒有感知。在這個區間,人的感知已經達到飽和。換句話說,把響應速度從0.2秒提升到0.1秒,大部分人感覺不到區別。據我的經驗,目前中高端安卓手機的性能瓶頸不是CPU的處理速度。所以對這個方舟的優化,用戶很可能無感。

另一個華為宣傳的對安卓的優化是內存垃圾回收(GC),從全局統一回收改變為隨用隨回收,回收時無需暫停應用,宣稱消除了因內存回收的卡頓。但問題是,安卓5.0版本,採用ART虛擬機,GC的次數和停頓時間已經大大改善,GC引起的卡頓幾乎感知不到了。

最重要的是,華為這些對安卓的改善可以說都是工程方面的,沒有技術的創新。消除JNI的開銷,把Java和C在一起編譯,來自於甲骨文的GraalVM和開源的LLVM;無需虛擬機類似於蘋果swift語言的執行和谷歌的AOT;引用計數的垃圾回收也是業界已有的建議。所有的思路都是谷歌曾經想到的,但為了可移植性做了犧牲。

谷歌也在對安卓優化,開發下一代作業系統。項目叫Fuchsia。 Fuchsia基於微內核架構,用於嵌入式系統,主要使用C語言和C++編寫。Fuchsia的設計目標之一是可運行在眾多的設備上,包括流動電話和個人計算機。

比較谷歌和華為的作業系統,目標雖然相同。但谷歌的系統包含更多的技術創新,而華為的系統着重於工程集成。這反映了兩個公司的區別。谷歌代表的是技術創新。而華為擅長的是工程能力,在技術上繼承和抄襲多,創新少。華為主要是依靠中國人工便宜,加上996,搞人海戰術。集成業界的一些好思路,螞蟻啃骨頭,做到工程實現。但要說是革命性的創新,遠遠談不上。純屬噱頭而已。

最後總結一下,華為所謂的手機作業系統備胎,會導致存貯和內存佔用顯著增加,帶來的響應速度的提升很可能不會被中高端手機用戶感知。並且給應用開發商帶來極大的不便,生態系統很難擴展。這個作業系統新東西少,只是集成了華為對安卓的一些優化。最後結果就是自己玩,難逃塞班和Palm OS的命運,噱頭而已。華為公司工程能力強,但不是一個技術創新的公司。

責任編輯: 江一  來源:萬維博客 轉載請註明作者、出處並保持完整。

本文網址:https://hk.aboluowang.com/2019/0527/1294348.html