当然,.dex
文件是针对Android的Dalvik VM,而.class
文件是针对JVM的。但我想知道它们是否具有相似的布局(常量池、字段、方法、属性等)?虽然字节码不同,但是否存在Dalvik特定的操作码与JVM中的操作码相对应?
当然,.dex
文件是针对Android的Dalvik VM,而.class
文件是针对JVM的。但我想知道它们是否具有相似的布局(常量池、字段、方法、属性等)?虽然字节码不同,但是否存在Dalvik特定的操作码与JVM中的操作码相对应?
相比之下,Java jar文件有许多类文件,每个APK文件只有一个classes.dex文件,如下图所示。根据Google的说法,APK格式与类文件格式不同是出于性能和安全原因。
有一个Dex文件格式和来自各自公司的Class文件格式规范。
这两个文件是完全不同的。
Dalvik可执行格式是虚拟机执行的代码。Dalvik虚拟机无法执行Java字节码,必须编译为dex,因为它使用了一组替代指令集。
阅读维基百科文章。