2012-03-28 285 views
3

虛擬機用於在不同操作系統上運行應用程序(Java將代碼編譯爲獨立於操作系統的.class文件,並將其解釋爲字節碼)。由於android應用運行在同一個操作系統(即Android)上,因此它不需要虛擬機(我可能在這裏是錯誤的)。那爲什麼它需要一個Dalvik VM?Android爲什麼需要虛擬機(DVM)?

回答

7

Android平臺可以在不同的架構上運行 - ARM,MIP和x86。爲了抽象出編譯每個體系結構的二進制文件的需求,虛擬機開始發揮作用。它也爲開發人員提供內存管理。

2

我們需要有人來編譯和Java類轉換成可以被解釋執行的字節碼。

它類似於JVM ...你有.java文件,它將被java編譯器編譯成.class文件。 .class文件不過是由JVM運行的字節碼。 JVM可以駐留在任何平臺上(windows,linux或unix)。

在android中,文件也被編譯成.dex文件並由DVM運行。只是爲了提供一個想法,安裝應用程序時,Android OS會分配唯一的Linux用戶ID,併爲每個應用程序分配一個DVM。總之,每個應用程序都有自己的Linux進程,DVM和Linux用戶標識。

Java文件被編譯成它消耗相比.class文件存儲器更少.DEX文件。

現在假定10個應用程序有10個獨立的DVM,並且操作系統有10個進程需要處理。

在Android OS調度員或調度負責處理這10個過程....這就是爲什麼我們的Android活動的生命週期。

您需要DVM來維護每個進程(每個應用程序)的運行狀態。

1

爲什麼機器人需求的虛擬機的基礎上,谷歌的Android設計的API,極大地使用Java接口。 Java本身通常運行在虛擬機上。

JVM本身是一個基於堆棧機器的VM,而Android的虛擬機(稱爲Dalvik)是一個基於寄存器的虛擬機(這是爲了減少代碼生成和更快的速度獲得更好的性能,無論使用Android的任何設備)

虛擬機的目的是通過模擬它能夠抽象硬件。如果你製作一個虛擬機並編譯它以在所有可能的硬件上運行,你就會得到最初使Java變得流行的原因:一次編寫一次可移植性。

你可以寫代碼,而無需改變它,在你的虛擬機可以運行在任何硬件上運行。

Digressing,Android主要是用C(和C++?)構建的,但操縱操作系統的API是通過Java接口的,因此您需要一個虛擬機。

相關問題