魔数
每个Class文件的头4个字节称为魔数(Magic Number),它的唯一作用是用于确定这个文件是否为一个能被虚拟机接受的Class文件。
很多文件存储标准中都使用魔数来进行身份识别,比如图片格式,如gif或jpeg等在文件头中都存有魔数。
使用魔数而不是扩展名来进行识别主要是基于安全考虑,因为文件扩展名可以自由地选择魔数值,只要这个魔数值还没有被广泛采用过而且不会引起混淆即可。
Class文件的魔数的获得很有”浪漫气息”,值为: 0xCAFEBABE
CA:202 FE:254 BA:186 BE:190
Class文件的版本
紧接着魔数的4个字节存储的是Class文件的版本号: 第5和第6个字节的次版本号(Minor Version),第7个和第8个字节是主版本号(Major Version)。
Java的版本号是从45开始的,JDK1.1之后的每个JDK大版本发布主版本号向上加1(JDK 1.0~1.1 使用了45.0~45.3的版本号)
高版本的JDK能向下兼容以前版本的Class文件,但不能运行以后版本的Class文件,即使文件格式并未发生变化。
如JDK1.1能支持版本号为46.0以上的Class,而JDK1.2则能支持45.0~46.65535的Class文件。