1、class文件
【概念】能够被JVM识别,加载并执行的文件格式。
【生成class文件】
通过IDE自动帮我们build;
手动通过javac去生成class文件;
通过Java命令去执行class文件;
【class文件作用】记录一个类文件的所有信息,记住是所有!
【class文件结构】
一种是8字节的二进制流文件;
各个数据按顺序紧密的排列,无间隙(好处:减少class的体积,加载class文件时,更快速);
每个类或接口都单独占据一个class文件(好处:每个类或接口都可以独自管理自己内部的内容,无需相互交叉);
1)access_flags
2)constant_pool
3)范例
【class文件弊端】
内存占用大,不适合移动端;堆栈的加载模式,加载速度慢;文件IO操作多,类查找慢;
2、dex文件
【概述】能够被DVM识别,加载并执行的文件格式。
【如何生成一个dex文件】
1)通过IDE自动帮我们build生成; 配置dex环境变量;/sdk/build-tools/26.0.0/dx;
2)手动通过dx命令去生成dex文件;
3)手动运行dex文件在手机;
【dex文件作用】记录整个工程中所有类文件的信息,记住是整个工程!
【dex文件结构】
一种是8字节的二进制流文件;
各个数据按顺序紧密的排列,无间隙;
整个应用中所有Java源文件都放在一个dex中;
3、class和dex对比
本质上他们都是一样的,dex是从class文件演变而来的;
class文件存在许多沉余,并整合;