本文参考《深入理解虚拟机》一书

平台无关性和语言无关性

虚拟机的存在帮助我们实现了平台无关性和语言无关性,平台无关性我们都知道,在多种操作系统中,我们可以运行相同的程序。语言无关性是因为多种编程语言经过编译后形成统一的能够被虚拟机识别的Class文件。

Class文件的结构

任何一个Class文件都存储这对象的类或者接口的信息,class文件本质上就是一张表

class文件的格式是固定的,根据上面这张表可以分析出class文件结构是什么样子的,class文件以8字节为单位进行存储。

1.魔数和版本号

前四个字节是魔数,用来作为标识这是一个class文件,后面的四个字节分别是版本号和副版本号。

2.常量池

紧接着版本号的是常量池入口,存储着常量池中的数据。

3.访问标志

判断访问的是类还是接口,是什么类型等。

4.类索引、父索引、和接口索引

判断类的继承关系

5.字段表集合

描述接口或者类中声名的变量,仅包括类级变量和实例级变量。

6.方法表集合

记录对方法的描述

7.属性表集合

字段表、class文件、方法表都有自己的属性表集合。用来描述某些场景专有的信息。