魔数与Class文件的版本

魔数

每个Class文件的头4个字节被称为魔数(0xCAFEBABE),唯一的作用就是确定这个文件是否为一个能被虚拟机接受的Class文件。

使用魔数而不是扩展名主要基于安全考虑,因为文件扩展名可以随意改动。文件格式的制定者可以自由地选择魔数值,

只要这个魔数值还没有被广泛采用过而且不会引起混淆。

文件版本

魔数后是文件版本,第5和第6个字节是次版本号(Minor Version),第7和第8个字节是主版本号(Major Version).

高版本的JDK能向下兼容以前版本的Class文件,但是不能运行以后版本的Class文件。

Java虚拟机规范》在Class文件校验部分明确要求了即使文件格式并未发生任何变化,虚拟机也必须拒绝执行

超过其版本号的Class文件。