《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 業(yè)界動(dòng)態(tài) > 賣手機(jī)只是小打小鬧,,做生態(tài)才是華為的目標(biāo)

賣手機(jī)只是小打小鬧,,做生態(tài)才是華為的目標(biāo)

2019-05-08
關(guān)鍵詞: 華為P30 編譯器 CPU 虛擬機(jī)

前一陣子,,華為P30系列發(fā)布,,最為明顯的升級(jí)就是相機(jī)拍照部分,外加上P20打下的基礎(chǔ),,突破了自己,,就算是突破了整個(gè)行業(yè),,然而從長(zhǎng)遠(yuǎn)的眼光看,華為P30的發(fā)布帶來(lái)的拍照提升只是例行升級(jí),,真正懂行的人都注意到了華為推出的“方舟編譯器”,,也看出來(lái)了華為真正的技術(shù)實(shí)力。

方舟編譯器簡(jiǎn)單來(lái)說(shuō),,就是可以將高級(jí)語(yǔ)言比如Java,,直接編譯成變成機(jī)器碼的技術(shù)。它最大的優(yōu)勢(shì)就在于繞過(guò)了安卓系統(tǒng)的VM(虛擬機(jī)),,從使得應(yīng)用可以像蘋果引以為傲的iOS系統(tǒng)一樣,,轉(zhuǎn)化出的機(jī)器碼可以直接由CPU運(yùn)算,從而使得運(yùn)行效率大大提升,。

wx_article_20190504210544_BfFJOI.jpg

概括的話,什么事都變得很簡(jiǎn)單,,為了證明方舟編譯器的技術(shù)含量,,我想還是有必要詳細(xì)介紹一下它的運(yùn)行原理。

wx_article_20190504210544_c8WfhS.jpg

經(jīng)歷過(guò)九年義務(wù)教育的我們都知道,,計(jì)算機(jī)是只認(rèn)識(shí)0101這樣的二進(jìn)制代碼,。對(duì)于人腦來(lái)說(shuō),直接用這樣的二進(jìn)制代碼來(lái)編程,,顯然是不太現(xiàn)實(shí)的,。于是匯編語(yǔ)言就出現(xiàn)了,屬于低級(jí)語(yǔ)言,,只是一系列的字母指令集,,后來(lái)為了實(shí)現(xiàn)更復(fù)雜的功能,高級(jí)語(yǔ)言誕生了,,比如C語(yǔ)言,,Java,python等等,,能夠用更短的代碼實(shí)現(xiàn)更復(fù)雜的功能,。

wx_article_20190504210544_heSjJc.jpg

當(dāng)然了高級(jí)語(yǔ)言計(jì)算機(jī)是無(wú)法直接讀取的,這里就需要用到編譯器了,,而編譯器就是將一種高級(jí)語(yǔ)言轉(zhuǎn)譯成一種低級(jí)語(yǔ)言的程序,,起到關(guān)鍵的“承上啟下”作用,所以編譯的復(fù)雜程度直接會(huì)影響程序的執(zhí)行效率,,比如C語(yǔ)言比Java語(yǔ)言的執(zhí)行效率高,,正是因?yàn)镃語(yǔ)言編譯出來(lái)的是CPU可以直接執(zhí)行的機(jī)器碼,而Java語(yǔ)言則先是Java虛擬機(jī)(JVM)編譯Java語(yǔ)言,,然后JVM再編譯成機(jī)器碼,。所以多出來(lái)的這一步就會(huì)被放大,影響到應(yīng)用的運(yùn)行,這也是安卓系統(tǒng)的應(yīng)用前期卡頓的主要原因,,雖然之后谷歌針對(duì)JVM做出了一系列的改進(jìn)和優(yōu)化,,但還是難以徹底解決。

wx_article_20190504210544_jKwOvk.jpg

反觀蘋果的iOS系統(tǒng),,直接使用Clang/LLVM來(lái)編譯出機(jī)器碼,,就沒(méi)有安卓還要一個(gè)中間層那么麻煩,所以iOS如絲滑般流暢的原因也因?yàn)槿绱?,還有一個(gè)不可忽視的因素是閉環(huán),。而安卓系統(tǒng)的底層是Linux系統(tǒng)搭建的,同時(shí)又因?yàn)榘沧肯到y(tǒng)開(kāi)源,,為了解決應(yīng)對(duì)不同硬件環(huán)境的適配問(wèn)題,,谷歌就增加了基于JIT(動(dòng)態(tài)編譯)的虛擬機(jī)Dalvik,并在Dalvik虛擬機(jī)上搭建了一個(gè)JAVA應(yīng)用框架,,所有的安卓應(yīng)用都是運(yùn)行在這個(gè)虛擬機(jī)上,。

當(dāng)然了谷歌也知道這樣效率不好,于是在Android 5.0版本中,,使用了ART模式來(lái)替換Davlik虛擬機(jī),。而ART是一個(gè)AOT(Ahead of Time)編譯器,是指在應(yīng)用運(yùn)行前就把字節(jié)碼靜態(tài)編譯成機(jī)器碼,,就避免了每次打開(kāi)應(yīng)用都要虛擬機(jī)編譯的麻煩,。然而只是代碼的靜態(tài)編譯,Java本身的動(dòng)態(tài)特性,,在執(zhí)行代碼過(guò)程中會(huì)有動(dòng)態(tài)類的加載(就是使用輪子),,而靜態(tài)編譯時(shí)無(wú)法預(yù)測(cè)會(huì)加載哪些動(dòng)態(tài)類。

wx_article_20190504210544_KfTvGU.jpg

所以弄了半天,,還是需要虛擬機(jī)的動(dòng)態(tài)編譯能力,。而安卓想要像iOS那樣流暢,就必須跳過(guò)虛擬機(jī),,而方舟編譯器,,解決的就是這個(gè)問(wèn)題。

根據(jù)官方信息,,華為的方舟編譯器也基于AOT編譯器,,不過(guò)方舟編譯器創(chuàng)造性地靜態(tài)編譯了動(dòng)態(tài)類,把所有的Java代碼都編譯成機(jī)器碼,,這樣也就可以完全避開(kāi)虛擬機(jī),,直接編譯成機(jī)器碼在手機(jī)CPU上運(yùn)行,也就能夠有iOS系統(tǒng)一樣的高效,。除了直接編譯之外,,方舟編譯器也優(yōu)化了編譯算法,,并且在內(nèi)存回收方面也有一定的改進(jìn),不僅是應(yīng)用,,對(duì)系統(tǒng)運(yùn)行的流暢度也有很大的提升,。

wx_article_20190504210544_KLd8ij.jpg

當(dāng)然了,如此重大的提升,,難道谷歌就不會(huì)想到嗎,。想得到,但力不從心,。因?yàn)橄胍褂梅街劬幾g器,,得從應(yīng)用的打包編譯上架重新開(kāi)始,開(kāi)發(fā)者必須按照方舟編譯器的標(biāo)準(zhǔn)重新編譯應(yīng)用安裝包,,所以這并不只是安卓系統(tǒng),,也需要應(yīng)用的配合才能使用,目前好像只有微博極速版做了適配,。

當(dāng)然了,,華為也宣布將方舟編譯器全面開(kāi)源,提供完整的編程框架和應(yīng)用開(kāi)發(fā)工具,,將更多的開(kāi)發(fā)者參與到方舟編譯器的開(kāi)發(fā)和使用,共同提升整個(gè)安卓生態(tài)的體驗(yàn),。方舟編譯器編譯是基于ARM指令集開(kāi)發(fā)的,,所以全面開(kāi)源意味著其它廠商的安卓系統(tǒng)也可以使用。

wx_article_20190504210544_nevAI5.jpg

這里我們就能看出來(lái)華為對(duì)研發(fā)的投入,,以及對(duì)生態(tài)的規(guī)劃,,并不只是說(shuō)說(shuō)而已。開(kāi)開(kāi)發(fā)布會(huì)賣賣手機(jī)只是小打小鬧的事情,,華為的目標(biāo)是全方位的生態(tài)建立,。不管你是對(duì)華為這個(gè)品牌抱什么看法,但不得不承認(rèn)目前在國(guó)內(nèi)只有華為有這樣的實(shí)力去做整個(gè)產(chǎn)業(yè)上的事,,去構(gòu)建屬于自己的生態(tài),,方舟編譯器就是這個(gè)過(guò)程中的催化劑。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。