The Java Virtual Machine
jvm是java平台的基石。它是负责独立于硬件与操作系统、减小它编译后代码的大小和保护用户免受恶意程序
的技术组件。
jvm是一个抽象的计算机。就像一个真正的计算机一样,拥有一个指令集且可在运行时操作不同的内存区域。
使用一个虚拟机实现一门编程语言是相当通用的,最为从人所知的也许要数UCSD Pascal的P-Code虚拟机了。
在Sun公司实现的jvm的最初原型实现,其指令集模拟类似个人数字助手(PDA)这样的手持设备的主机软件,
现在的oracle实现,其指令集模拟手机、桌面、和服务器设备,但java虚拟机的实现并不规定任何特定的实现
技术、主机硬件或者主机操作系统。它并不是固有的解释,仅可以当做是通过将它的指令集编译为CPU指令集
的实现。它也可以使用微代码实现或者直接是硬件CPU。
java虚拟机并不知道任何关于java程序语言的东东,仅认识一种特定的二进制格式,class类型文件格式。一
个class文件 包含java虚拟机指令集(或者说是字节码)和一个符号表,当然还有其他从属信息。
为了安全性,java虚拟机规定强制类型语方法和class文件中的代码结构约束。但是,任何可以使用有效class
文件表达的功能的语言都可以运行在java虚拟机上。由于其平台无关的特性,许多语言也将java虚拟机做为其
语言的交付工具。
此处的java虚拟机规范同java SE 9平台兼容,且支持The Java Language Specification,Java SE 9 Edition
中指定的java程序语言。
Organization of the Specification(文档组织结构)
第二章为java虚拟机架构的概述。
第三章介绍使用Java编程语言编译为java虚拟机指令集。
第四章规定class文件格式,与硬件和操作系统无关的用于表示编译后的类和接口的二进制格式。
第五章指定java虚拟机的启动与加载、链接和初始化的类和接口。
第六章指定java虚拟机的的指令集,按字线顺序展示指令集。
第七章展示一个以操作码值索引的java虚拟机操作码助记符。
在java虚拟机的第二版,第二章给出java程序语言的概述是用于支持java虚拟机规范,而不是它自身的一部分
。在第九版里则是直接指向java程序语言规范。