The Java Virtual Machine Specification, Java SE 8
目录
Java虚拟机是Java平台的基石。它是该技术的组成部分,负责其硬件和操作系统的依赖,编译小尺寸的代码,以及保护用户免受恶意程序攻击的能力。
Java虚拟机是一种抽象的计算机机器。就像一台真正的计算机一样,它有一个指令集,并在运行时操作各种内存区域。使用虚拟机实现编程语言是相当常见的;最著名的虚拟机可能是UCSDPascal的P-Code机。
Java虚拟机的第一个原型实现是在Sun Microsystems, Inc.公司完成的,它模拟了Java虚拟机指令,类似于当代个人数字助理(PDA,Personal Digital Assistant)。Oracle当前的实现模拟了移动设备、桌面设备和服务器设备上的Java虚拟机,但是Java虚拟机不承担任何特定的实现技术、主机硬件或主机操作系统。它没有内在的解释,但同样可以通过编译其指令集为硅质CPU的指令集来实现。它也可以在微代码microcode中实现,或直接在硅中实现。
Java虚拟机对Java编程语言一无所知,只知道一种特定的二进制格式,即类文件格式。一个类文件包含Java虚拟机指令(或字节码)和一个符号表,以及其他辅助信息。
为了安全起见,Java虚拟机对类文件中的代码施加了强大的语法和结构约束。但是,任何可以用有效类文件表示的功能的语言都可以由Java虚拟机托管。被一个通常可用的、机器独立的平台所吸引,其他语言的实现者可以将Java虚拟机作为其语言的交付工具。
这里指定的Java虚拟机与Java SE 8平台兼容,并支持Java语言规范,Java SE 8版中指定的Java编程语言。
【02 Java虚拟机的结构】概述了Java虚拟机的架构。
【03 编译Java虚拟机】介绍了用Java编程语言编写的代码编译到Java虚拟机的指令集中。
【04 Class类文件格式】指定了类文件格式、用于表示已编译的类和接口的硬件和操作系统相关的二进制格式。
【05 加载、链接和初始化】规定了Java虚拟机的启动以及类和接口的加载、链接和初始化。
【06 Java虚拟机指令集】规定了Java虚拟机的指令集,按操作码助记符的字母顺序呈现指令。
【07 Opcode操作码助记符】给出了一个由操作码值索引的Java虚拟机操作码助记符表。
在Java®虚拟机规范的第二版中,第2章概述了Java编程语言,该语言旨在支持Java虚拟机的规范,但它本身并不是规范的一部分。在Java虚拟机规范,Java SE 8版中,读者可以参考Java语言规范,Java SE 8版来了解有关Java编程语言的信息。表格的参考:(JLS,Java®Language Specification)表明这是必要的。
在Java®虚拟机规范的第二版中,第8章详细说明了解释Java虚拟机线程与共享主存的交互的底层操作。在Java虚拟机规范Java SE 8版中,读者可以参考Java语言规范Java SE 8版的第17章来了解关于线程和锁的信息。第17章反映了由JSR 133专家组生成的Java内存模型和线程规范。
在整个规范中,我们引用了从Java SE平台API中提取的类和接口。每当我们使用单个标识符N引用一个类或接口(示例中声明的接口除外)时,预期的引用都是指向包java.lang中名为N的类或接口。我们对来自java.lang的包以外的类或接口使用完全限定名。
每当我们引用在包java或其中的任何子包中声明的类或接口时,预期的引用是由引导类加载器加载的(5.3.1)加载的类或接口。
每当我们引用名为java的包的子包时,预期的引用都是指向由引导类加载器确定的那个子包。
本规范中字体的使用如下:
非规范信息,旨在澄清规范,以较小的缩进文本(本文中灰色)给出。