Android/ target=_blank class=infotextkey>安卓是谷歌將它從開源linux上改造而來,依舊保持開源特性。為了應(yīng)用開發(fā)者更多地開發(fā)安卓程序,自然也就保留了linux上的虛擬機(jī)機(jī)制。同時,安卓的目標(biāo)是手機(jī)等移動終端,這些設(shè)備的處理器五花百門,而且開源安卓也會被各種深入定制,這同樣導(dǎo)致了安卓依然沿用了虛擬機(jī)機(jī)制來保持高兼容性。當(dāng)然,這些華為研發(fā)了方舟編譯器,讓系統(tǒng)直接運(yùn)行機(jī)器碼,以此來消除虛擬機(jī)帶來的弊端。
1、安卓的誕生過程決定了它會沿用linux的虛擬機(jī)
安卓系統(tǒng)最早并不是谷歌研發(fā)出來的,而是一家名叫Android的初創(chuàng)公司研發(fā)的。這家公司成立22個月后,就把原始Android雛形系統(tǒng)以4千萬美元的價格賣給了谷歌。這個雛形原本就基于linux系統(tǒng)研發(fā)而來,自然里面也還是沿用了linux的虛擬機(jī)機(jī)制。
2、移動終端硬件廠商太多,也只能沿用虛擬機(jī)方式
谷歌拿到系統(tǒng)后,自己繼續(xù)研發(fā)Android系統(tǒng),在2007年還集合了84家當(dāng)時一流的硬件廠商組成研發(fā)聯(lián)盟。整個研發(fā)依然還是基于linux開源系統(tǒng),但它解決了商業(yè)化的一個大難題。那就是,linux是開源系統(tǒng),是有GPL開源協(xié)議的。很多硬件廠家為了適配該系統(tǒng),必須將在上面研發(fā)的驅(qū)動程序公開,一旦公開驅(qū)動程序代碼就相當(dāng)于公開了自己的硬件設(shè)計。而谷歌研發(fā)的Android系統(tǒng)解決了這個問題,它將驅(qū)動程序放置到了userspace里面,并讓它可以通過l內(nèi)核訪問硬件。同時,公開接口就可以讓硬件廠商編寫驅(qū)動程序。硬件廠商只需要提供驅(qū)動程序即可,不需要公開源代碼了。
這么多硬件廠商一起研發(fā),自然就會面臨一個問題就是每個廠商的硬件都不同。這對Android生態(tài)發(fā)展來說是個必須解決的兼容性問題。最好的辦法依然是沿用linux的虛擬機(jī)機(jī)制,這樣Android的軟件作者就無需針對不同硬件重新開發(fā)軟件。只需要一次開發(fā)就可以在安卓系統(tǒng)上的虛擬機(jī)中運(yùn)行。
3、華為的方舟編譯器
安卓的虛擬機(jī)機(jī)制在很大程度上解決了兼容性的問題,但是這種邊解釋邊執(zhí)行的方式,也降低了軟件的運(yùn)行效率。這些年,華為在這方面的研發(fā)上花了大功夫,成功研制出了“方舟”編譯器。該編譯器就是為了解決這個問題而誕生的。如果軟件作者采用方舟編譯器重新編譯自己的程序。它的軟件就可以以機(jī)器碼的形式在安卓系統(tǒng)上高效運(yùn)行,并且方舟編譯器還會對程序進(jìn)行優(yōu)化。按照華為方面的數(shù)據(jù)顯示,使用華為方舟編譯器編譯后的程序,操作流暢度提升24%,系統(tǒng)響應(yīng)速度提升44%,第三方應(yīng)用操作流暢度提升60%!
總結(jié)
Android沒有繞開虛擬機(jī)直接運(yùn)行,是因為從它研發(fā)之初為了保持高兼容性,不得不沿用了虛擬機(jī)的機(jī)制。但在這些年,華為研發(fā)了“方舟”編譯器,就是為了解決這個問題。通過方舟編譯器編譯后的程序可以直接以機(jī)器碼的形式在安卓系統(tǒng)上運(yùn)行,效率大大提高。






