當前位置:編程學習大全網 - 源碼下載 - 為什麽Android不可以繞開虛擬機直接運行?

為什麽Android不可以繞開虛擬機直接運行?

安卓是谷歌將它從開源linux上改造而來,依舊保持開源特性。為了應用開發者更多地開發安卓程序,自然也就保留了linux上的虛擬機機制。同時,安卓的目標是手機等移動終端,這些設備的處理器五花百門,而且開源安卓也會被各種深入定制,這同樣導致了安卓依然沿用了虛擬機機制來保持高兼容性。當然,這些華為研發了方舟編譯器,讓系統直接運行機器碼,以此來消除虛擬機帶來的弊端。

1、安卓的誕生過程決定了它會沿用linux的虛擬機

安卓系統最早並不是谷歌研發出來的,而是壹家名叫Android的初創公司研發的。這家公司成立22個月後,就把原始Android雛形系統以4千萬美元的價格賣給了谷歌。 這個雛形原本就基於linux系統研發而來,自然裏面也還是沿用了linux的虛擬機機制。

2、移動終端硬件廠商太多,也只能沿用虛擬機方式

谷歌拿到系統後,自己繼續研發Android系統,在2007年還集合了84家當時壹流的硬件廠商組成研發聯盟。整個研發依然還是基於linux開源系統,但它解決了商業化的壹個大難題。那就是,linux是開源系統,是有GPL開源協議的。很多硬件廠家為了適配該系統,必須將在上面研發的驅動程序公開,壹旦公開驅動程序代碼就相當於公開了自己的硬件設計。而谷歌研發的Android系統解決了這個問題,它將驅動程序放置到了userspace裏面,並讓它可以通過l內核訪問硬件。同時,公開接口就可以讓硬件廠商編寫驅動程序。硬件廠商只需要提供驅動程序即可,不需要公開源代碼了。

這麽多硬件廠商壹起研發,自然就會 面臨壹個問題就是每個廠商的硬件都不同。這對Android生態發展來說是個必須解決的兼容性問題。最好的辦法依然是沿用linux的虛擬機機制 ,這樣Android的軟件作者就無需針對不同硬件重新開發軟件。只需要壹次開發就可以在安卓系統上的虛擬機中運行。

3、華為的方舟編譯器

安卓的虛擬機機制在很大程度上解決了兼容性的問題,但是這種邊解釋邊執行的方式,也降低了軟件的運行效率。這些年,華為在這方面的研發上花了大功夫,成功研制出了“方舟”編譯器。該編譯器就是為了解決這個問題而誕生的。如果軟件作者采用方舟編譯器重新編譯自己的程序。它的軟件就可以以機器碼的形式在安卓系統上高效運行,並且方舟編譯器還會對程序進行優化。按照華為方面的數據顯示, 使用華為方舟編譯器編譯後的程序,操作流暢度提升24%,系統響應速度提升44%,第三方應用操作流暢度提升60%!

總結

Android沒有繞開虛擬機直接運行,是因為從它研發之初為了保持高兼容性,不得不沿用了虛擬機的機制。但在這些年,華為研發了“方舟”編譯器,就是為了解決這個問題。通過方舟編譯器編譯後的程序可以直接以機器碼的形式在安卓系統上運行,效率大大提高。

為了多點兒面試題[機智]

當初設計android的時候,設計人員只是軟件工程師,無法針對某個CPU(目前有的CPU框架intel,arm,mips,rsicv等)去開發。最好的是,我針對所有CPU都支持。

跨平臺,是指java語言編寫的程序,壹次編譯後,可以在多個系統平臺上運行。

因為機器針對不同機器語言,有不同執行邏輯。

就好比二進制000100,在arm裏面是調用加法器,而riscv是調用乘法器壹樣。所以,需要給這些不同平臺請個翻譯。而虛擬機就是起到翻譯作用。

這樣雖然增加了消耗(例如執行同樣代碼,時間消耗上,c明顯由於java),但是可以某種意義上,把軟件,物理硬件分開了。軟件重點設計自己app,而硬件不斷增加CPU性能。

因為上層應用是 建立在 java 庫的基礎上,運行 java 庫 需要 java 虛擬機,調試模式,可以登錄到系統裏,直接運行linux 命令,也可以下載運行 c程序。

啥叫Android不可以繞開虛擬機直接運行?Android本質上是Linux的變種,它本身就是應用APP的虛擬機容器,Android源碼針對硬件平臺編譯之後,就是直接在CPU上運行的機器碼了,它的運行並不依賴於其他的虛擬機。

APP是JAVA打包的,倒是需要在Android的JVM裏運行,畢竟要考慮跨平臺嘛。

ActivityThread.java就是壹個應用程序,有main方法,是壹個進程,就是靠虛擬機,沒有這個就沒有app。咋繞開,繞開就得不用這個,得從內部更換成別的,都更換了那就不是簡單的事情了

因為java代碼必須編譯成機器語言才行,這時候就要接助虛擬機

在問為什麽前,先問下是什麽?Android是可以不依賴虛擬機運行的,只需要改壹下重新編譯就好了。

系統就是這麽設計的

  • 上一篇:八個改善Java遺留系統的技巧
  • 下一篇:java培訓學校去哪好
  • copyright 2024編程學習大全網