小凉

3 0642700 3 0642770 5 34202 13942 4314 0624

JVM-class文件完全解析-魔数

魔数(Magic Number)

  魔数和Class文件的版本.


  一个文件能否被Java虚拟机接受,不是通过文件的扩展名来进行识别的,而是通过魔数来进行识别.这主要是基于安全方面的考虑,因为文件的扩展名可以随意改动.而且在很多文件存储标准中都使用魔数来进行身份识别,例如图片格式.


  每个Class文件的头4个字节称为魔数,它的唯一作用就是确定这个文件是否为一个能被虚拟机接受的Class文件.Class文件的魔数,值为:0xCAFEBABE(咖啡宝贝!很有浪漫气息吧...).


  紧接着魔数的4个字节存储的是Class文件的版本号:第5和第6个字节是次版本号(Minor Version),第7和第8个字节是主版本号(Major Version).
Java的版本号是从45开始的,JDK1.1之后的每个JDK版本发布主版本号向上加1(JDK1.0~1.1使用了45.0~45.3的版本号),高版本的JDK能向下兼容以前版本的Class文件. 

 下面看一段简单的代码: 

最简单的一个类了.javac编译后产生的 .class文件(在vim下使用使用十六进制打开的):

看到class文件的头4个字节了吧, 是不是就是"CAFE BABE",你也可以尝试打开自己的class文件看看是不是这个充满浪漫的名字呢.(记得使用十六进制打开)

 

posted on 2016-03-25 22:47  小凉  阅读(1571)  评论(0编辑  收藏  举报

导航