在Android OS中,我能夠運行幾個在桌面環境下編譯的Java JAR文件。例如,jtransforms爲什麼Java SE編譯的JAR文件能夠在Android中執行
我可以知道這是爲什麼嗎?我認爲Oracle的JVM和谷歌的Dalvik VM使用兩種不同的字節碼格式?爲什麼Java SE編譯的JAR文件能夠在Android中執行?
在Android OS中,我能夠運行幾個在桌面環境下編譯的Java JAR文件。例如,jtransforms爲什麼Java SE編譯的JAR文件能夠在Android中執行
我可以知道這是爲什麼嗎?我認爲Oracle的JVM和谷歌的Dalvik VM使用兩種不同的字節碼格式?爲什麼Java SE編譯的JAR文件能夠在Android中執行?
我假設你只是將jar文件包含在你的android項目中?然後它就起作用了,因爲在構建過程中它會被轉換(對於您自己的類文件也是這樣做的),以dex格式。這是通過dex(dx)工具完成的。在eclipse中使用ADT會自動完成。它可以在android sdk中手動使用,當然也可以:
在android-sdk-windows\platform-tools\dx.bat
下如果在windows上。
根據維基百科的說法,dx
用於將已編譯的.class
文件轉換爲.dex
格式。
1. Java SE
-
Java (Swing + AWT)
= Android
2. In 2005, when Java was undergoing changes, Android creator didnt wanted to base Android
totally on Java
。 So they included JVM as the 1st compilation unit, thats the reason
JRuby , Jython, etc can be used to write Android apps
。 And 2nd Compilation unit as Dalvik Compiler
。
3. So its quite natural that a jar file compiled under desktop environment works fine on Android.
JIT編譯器與此有什麼關係?這是針對虛擬機的,而不是編譯器。 –
我認爲這會在運行時發生,但也許這不是真的,所以我現在將它刪除。 –