一、文件格式不同
1、Java虚拟机
- 基于栈。基于栈的机器必须使用指令来载入和操作栈上的数据。
- 运行的是Java字节码。(Java类会被编译成一个或多个字节码
.class文件,打包到.jar文件中)。Java虚拟机从相应的.class文件和.jar文件中获取相应的字节码。
2、Dalvik虚拟机(Android)
- 基于寄存器
- 运行的是自定义.dex字节码格式。(Java类被编译成
.class文件后,通过一个dx工具将所有的.class文件转换成一个.dex文件,然后dalvik虚拟机会从中读取指令和数据)。
二、dex和odex的区别
dex文件格式可以减少整体文件尺寸,提高I/O操作的类查询速度odex文件是为了在运行过程中进一步提高性能,对dex文件的进一步优化。