美文网首页
Class 文件

Class 文件

作者: 寇夏寇夏 | 来源:发表于2017-05-18 20:52 被阅读0次

总体结构

java 虚拟机规范的定义

u1 u2 u4 u8 分别表示 无符号单字节 2字节 4字节 8字节的整数

魔数(magic number)

一个4字节无符号整数 固定为 0xCAFEBABE

当虚拟机加载类的时候会首先读取并校验魔数,如果不为 0xCAFEBABE则会抛出 异常 ClassFormatError


<<自己动手写 java 虚拟机>> 的代码

版本号

紧跟在魔术后面就是 Class的小版本和大版本号

表示当前 Class 文件是由那个版本的编译器编译产生的 分别2字节标识

Class 文件版本号和平台的对应

java 虚拟机向下兼容 高版本的虚拟机可以执行由低版本编译器生成的 class 文件

除了1.1版本的虚拟机 对应的小版本号不为0 其他编译器版本的小版本号都为0

在读取并校验魔数通过之后会读取版本号并进行校验

<<自己动手写 java 虚拟机>> 的代码

常量池

跟在版本号后面的是 Class 文件的常量池信息

constant_pool_count

常量池的大小 标识该 Class 文件有多少个常量池表项 常量池0为空缺项 不存放实际内容

constant_pool

常量池表项信息 每个表项由 tag 值标识

常量池表项对应的 tag 值 格式定义 格式定义 格式定义 格式定义 格式定义 格式定义 格式定义 decriptor_index中类型的字符串标识

Class访问标识

常量池后面是访问标记 该标记使用两个字节标识,用于表明类的访问信息

class 为类可用的访问标记

当前类,父类和接口

类访问标记后面是 该类类别,父类类别以及实现的接口的数量和实现的接口的类名this_class,super_class 都是2字节的无符号整数,指向常量池中的 CONSTANT_Class

Class文件的字段

在之后是类的字段信息 首先指明字段的个数

字段的访问标记

name_index和 descriptor_index 指向常量池中 CONSTANT_Utf8 用户描述字段名及字段的类型

attributes_count 和 attributes 用于存储字段的一些属性,如初始值,注释信息等

常量属性结构

Class文件的方法基本结构

方法的执行主体 --Code 属性

记录行号和局部变量表

抛出异常 Exceptions属性

SourceFile 属性

描述当前 Class文件由哪个源文件编译得到

BootstrapMethods 属性

1.7中增加了这个属性 用于支持 invokeDynamic 指令 ,这个属性描述和保存引导方法

InnerClasses属性

描述外部类与内部类之间的关系

Deprecated 属性

表示 类方法或字段在未来版本中将被废弃

相关文章

  • ClassLoder学习笔记

    ClassLoder 负责加载class文件,class文件在文件开头有特定的文件标识,将class文件字节码内容...

  • Java类装载器

    一、负责加载class文件,class文件在文件开头有特定的文件标示,并且ClassLoader只负责class文...

  • java常用命令行参数

    运行class文件执行带main方法的class文件,命令行为:java 运行jar文件中的...

  • 热修复-从java文件到生成apk你需要知道的全过程

    一、从java文件到class文件 1.class文件 class文件就是一种文件格式,被JVM识别。如下图jav...

  • Discuz!数据库操作DB类和C::t类介绍

    类定义文件 DB类: 文件\source\class\class_core.php class DB extend...

  • 使用命令行执行Java程序

    确认运行环境 准备源文件生成文件: 编辑源文件内容 编译.class文件 运行.class文件

  • Android插件化技术——【class学习】

    class 文件的定义 class 文件就是能够被 JVM 识别,加载并且执行的文件格式。从定义来看,class ...

  • Class文件

    Class文件是啥 编译后被Java虚拟机所执行的代码使用了一种平台中立(不依赖于特定硬件及操作系统的)的二进制格...

  • .CLASS文件

    java class 文件是对Java程序二进制文件格式的精确定义。每一个Java class文件都对一个Java...

  • Class 文件

    总体结构 java 虚拟机规范的定义 u1 u2 u4 u8 分别表示 无符号单字节 2字节 4字节 8字节的整数...

网友评论

      本文标题:Class 文件

      本文链接:https://www.haomeiwen.com/subject/poisxxtx.html