为什么Java SE编译的JAR文件能够在Android中执行

时间:2012-06-17 11:45:40

标签: java android

在Android OS中,我能够运行在桌面环境下编译的几个Java JAR文件。例如,jtransforms

我可以知道为什么会这样吗?我认为来自Oracle的JVM和来自Google的Dalvik VM使用两种不同的字节代码格式?为什么Java SE编译的JAR文件能够在Android中执行?

3 个答案:

答案 0 :(得分:6)

我假设你只是在你的android项目中包含jar文件?然后它工作,因为在构建过程中它被转换(对你自己的类文件也是如此!)到dex格式。这是通过dex(dx)工具完成的。在eclipse中使用ADT会自动为您完成。它当然也可以在android sdk中手动使用:

android-sdk-windows\platform-tools\dx.bat下,如果在Windows上。

答案 1 :(得分:1)

根据维基百科,dx用于将已编译的.class文件转换为.dex格式。

答案 2 :(得分:0)

1. Java SE - Java (Swing + AWT) = Android

2。In 2005, when Java was undergoing changes, Android creator didnt wanted to base Android    totally on JavaSo they included JVM as the 1st compilation unit, thats the reason    JRuby , Jython, etc can be used to write Android appsAnd 2nd Compilation unit as Dalvik Compiler

3. So its quite natural that a jar file compiled under desktop environment works fine on Android.