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会去除冗余,并整合。

你可能感兴趣的:(Android)