dex文件与class文件如何生成

一、dex文件与class文件如何生成
Class文件:可以被JVM所识别的文件。记录一个类文件的所有信息。
文件结构:a)一种8位字节的二进制流文件。
b)各个数据按顺序紧密的排列,无间隙。
c)每个类或接口都单独占据一个class文件。

Dex文件:可以被DVM所识别的文件。记录整个工程所有类的信息。
文件结构:a)一种8位字节的二进制流文件。
b)各个数据按顺序紧密的排列,无间隙。
c)整个应用所有的java源文件都放在一个dex中。

Class文件生成:
1、Javac Hello.java (生成.class)
2、Java Hello (执行.class文件)

Dex文件的生成:
3、dx --dex--output Hello.dex Hello.class 生成了我们的.dex文件
4、adb push Hello.dex /storage/emulated/0 将.dex文件push到手机上
5、adb shell 进入手机控制台
6、dalvikvm -cp /sdcard/Hello.dex Hello 执行.dex文件

二、为什么Android虚拟机加载的是dex文件?
Class文件弊端:1)内存占用大,不适合移动端。
2)堆栈的加栈模式,加载速度慢。
3)文件IO操作多,类查找慢。

三、两者之间的异同:
1、本质上他们都是一样的,都是由java源文件编译所来。
2、Dex是class文件演变而来。
3、Class文件有许多冗余信息,dex会去除冗余,并整合。

你可能感兴趣的:(dex文件与class文件如何生成)