The Java Virtual Machine Specification
第一章 Java虚拟机概述 第二章 Java虚拟机编译 第三章 Java虚拟机类文件结构 第四章 Java虚拟机类加载机制 第五章 Java虚拟机指令集
1. Java 虚拟机的概述
Java 虚拟机是 Java 平台的基石。Java 虚拟机是一个抽象的计算机,有指令集并在运行时操作各种内存区域。 Java 虚拟机技术解决了硬件和操作系统独立性、编译后代码小、以及保护用户安全的问题。Java 虚拟机不了解 Java 语言,只知道特定的 class 文件格式,该 class 文件包含 Java 虚拟机指令、符号表以及其它辅助信息。为了安全,虚拟机对 class 文件的格式和语法有很强的校验。然而任意编程语言如果可以编译并用 class 文件表示其功能,其语言就可以使用 JVM 作为它们的交付工具。
2. Java 虚拟机结构
Java 虚拟机结构在 Java 虚拟机规范中最重要的两个部分是类文件格式和指令集。
2.1 类文件格式
类文件格式是 JVM 结构中最重要的部分,之后会详细描述。
2.2 数据类型和值
用于类文件格式中描述方法参数以及变量声明以及赋值,有原始类型和引用类型。
2.3 运行时数据区域
2.4 指令集
指令集由1个 Byte 的操作符和0或者多个的操作数构成。所有的指令的集合就构成了虚拟机支持的功能列表。虚拟机在执行的时候会先计算当前要执行的是哪个指令,并存储在 PC Registers 中,然后从这个地址获取这条指令,从栈桢中获取指令的操作数,解释执行当前指令,执行完后再计算下一个要执行的指令地址。同时虚拟机也支持 JIT 编译执行,先将 JVM 指令编译成机器代码并存储在方法区的代码缓存中以供后续执行。
|