目录
引言
class文件即是字节码(字节码是一种能够在所有平台统一使用的程序存储格式)文件,其本质是供JVM进行编译包含特定格式二进制流的磁盘文件,这是实现java跨平台编译的基础之一(另一个基础就是JVM)。
在程序编译的流程上,其来源具有多源性(可能是多种语言(如java程序、JRuby程序、Groovy程序、其他等),实现了JVM的跨语言编译),class文件是提供给JVM进行编译的文件;
在文件内容上,其保存的是Java虚拟机的指令集和符号表,以及若干辅助信息;
注意:在java中,任何一个class文件都对应着唯一一个类或者接口的定义信息,以磁盘文件的形式存在;但是,类或者接口不一定都需要定义在文件中(比如,可能通过类加载器直接生成。),不一定以磁盘形式存在。如下图所示:

class类文件的结构
这一节主要参考书籍《深入理解java虚拟机》第六章内容,这里不再赘述。
概述:Class文件是一组以8位字节为基础单位的二进制流(二进制流,本质!!!),各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符。
文章参考:带你逐个字节地搞明白.class文件
class文件的生存周期
这一节参考文章:java中的.class文件的生存周期是怎样的(即类加载到类释放的过程)
结语
- 字节码文件本质是保存具有特定格式的二进制流,其以磁盘文件形式存在。
- 这些二进制流是提供给JVM对程序进行编译的信息,其来源不仅仅局限于java程序,也可能是其他程序。
- 与此同时,这些二进制流不一定以磁盘文件形式存在,只要它能够被JVM拿到相应内存进行编译,他就能完成其功能。