Yefei.Blog

个人日记 WIKI

用户工具


Class 文件格式

数据类型:

  • u1: 无符号 8-bit 整数
  • u2: 无符号 16-bit 整数 big-endian
  • u4: 无符号 32-bit 整数 big-endian
  • table: 可变长数组
struct Class_File_Format {
   u4 magic_number; // 魔术号 (CAFEBABE) 用于标记文件格式
   u2 minor_version; // 小版本号 (按照java版本一直以来的老规矩,一直都是0)
   u2 major_version; // 大版本号 (1.6, 1.7, 1.8 ……) 详见下面的版本号说明
 
   u2 constant_pool_count; // 常理池大小
   table constant_pool[constant_pool_count - 1]; // 常量池内容
 
   u2 access_flags;
   u2 this_class;
   u2 super_class;
 
   u2 interfaces_count;
   u2 interfaces[interfaces_count];
 
   u2 fields_count;
   table fields[fields_count];
 
   u2 methods_count;
   table methods[methods_count];
 
   u2 attributes_count;   
   table attributes[attributes_count];
}

major version

  • Java SE 9 = 53 (0x35 hex)
  • Java SE 8 = 52 (0x34 hex)
  • Java SE 7 = 51 (0x33 hex)
  • Java SE 6.0 = 50 (0x32 hex)
  • Java SE 5.0 = 49 (0x31 hex)
  • JDK 1.4 = 48 (0x30 hex)
  • JDK 1.3 = 47 (0x2F hex)
  • JDK 1.2 = 46 (0x2E hex)
  • JDK 1.1 = 45 (0x2D hex)

版本详细信息可以在乌龟壳子官网查看 The JavaTM Virtual Machine Specification 2nd edition

http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html


皖ICP备15000265号

皖公网安备 34110302000106号