Android是java编写的,同样是java的class,到底有什么不同呢,调研后发现Android除了把java文件变成class文件外,还将class文件变成了dex文件,那dex和class有什么不同,为什么还要做一次?我们写一个最简单的HelloWorld.java文件看看区别:
可以看见class里面将一个类变成了一个结构体,结构体内对应这不同的字段。再来看看dex文件:
dex将所有数据分成了不同的结构体,可以知道dex将class全部整合,将内部逻辑上公共的部分全部提出来统一管理,这样有什么好处呢?依照我的理解:
1. 首先一点肯定是压缩了空间,毕竟mobile端的空间要小很多。
2. 统一的管理有利于内部实现。
3. 由于所有的apk处在同一级别上,不存在上下级的关系,将一个apk的公共部分统一管理起来比一个apk下多个class分别管理要来的容易。