无关性基石
- 概述
- 实现语言无关性的基础:
- 虚拟机
- 字节码存储格式。
- java虚拟机:只与Class文件(二进制文件)所关联
- class文件包括了java虚拟机指令集和符号表以及若干其他辅助信息。
- 实现语言无关性的基础:
Class类文件结构
- 无符号数
- 概念
- 最基本的数据类型
- 描述数字,索引引用,数量值或者按照UTF-8i编码构成的字符串值
- U1(1个字节)
- U2(2个字节)
- U4(4个字节)
- U8(8个字节)
- 概念
- 表
- 魔数
- Class文件版本号
- 常量池
- 访问标志
- 类索引/父类索引/接口索引
- 字段表集合
- 方法表集合
- 属性表集合
- Code属性
- 显示异常处理表
- Exceptions
- LineNumberTable
- LocalVariableTable
- SourceFile
- ConstantValue
- InnerClasses
- Desprecated及Syntheic
- StackMapTable
- Signature
- BootstrapMethods
- 属性表集合
字节码指令
- 加载和存储指令
- 概述
- 用于栈帧中的局部变量表、操作数栈之间传输数据
- 概述
- 运算指令
- 概述
- 用于两个操作数栈上的值进行特定运算。
- 把结果重新存入到操作栈顶
- 类型转换指令
- 概述
- 将两种不同的数值类型进行相互转换
- 实现用户代码中显示转换操作、字节码指令集中 数据类型相关指令 无法与 数据类型 一一对应的问题
- 概述
- 对象创建与访问指令
- 概述
- 用于对象创建后获取对象实例或
- 数组实例中的字段或者数组元素
- 概述
- 操作数栈管理指令
- 概述
- 用于直接操作操作数栈
- 概述
- 控制转移指令
- 概述
- 用于让java虚拟机 有条件或 无条件 从指定位置的指令 继续执行程序
- (不是控制转移指令的下一条指令)
- 即: 修改PC寄存器的值
- 概述
- 方法调用和返回指令
- 概述
- 用于方法调用
- 概述
- 异常处理指令
- 概述
- 在java虚拟机中异常处理(很久以前曾经使用jsr和ret指令来实现)采用异常表完成
- 概述
- 同步指令
- 概述
- java虚拟机中的 方法级同步和 方法内部一段指令序列同步 使用管程(Monitor)来支持 。
- 方法级同步是隐式的
- 即:无需通过字节码指令来控制,
- 实现在方法调用和返回操作之中
- 概述