Java虚拟机规范-第1章简介

2021-02-20 14:15发布

第1章简介

1.1。一点历史

在的Java ®编程语言是通用的,并发的,面向对象的语言。它的语法类似于C和C ++,但是省略了许多使C和C ++复杂,混乱和不安全的功能。最初开发Java平台是为了解决为网络消费设备构建软件的问题。它旨在支持多种主机体系结构并允许安全交付软件组件。为了满足这些要求,编译后的代码必须能够在跨网络的传输中幸存下来,可以在任何客户端上运行,并确保客户端可以安全运行。

万维网的普及使这些属性更加有趣。Web浏览器使数以百万计的人能够以简单的方式浏览Internet并访问媒体丰富的内容。最终,有了一种媒介,无论您使用的是什么机器,无论它是连接到快速网络还是慢速调制解调器,您所听到和听到的内容基本上都是相同的。

Web爱好者很快发现Web的HTML文档格式所支持的内容太有限了。HTML扩展(例如表单)仅强调了这些限制,同时明确指出没有浏览器可以包含用户想要的所有功能。扩展性就是答案。

HotJava浏览器首先通过将程序嵌入HTML页面来展示Java编程语言和平台的有趣特性。程序与出现的HTML页面一起透明地下载到浏览器中。在被浏览器接受之前,应仔细检查程序以确保其安全。像HTML页面一样,编译程序与网络和主机无关。这些程序的行为方式相同,无论它们来自何处或要加载到哪种计算机上并在其上运行。

包含Java平台的Web浏览器不再局限于一组预定功能。可以确保包含动态内容的网页的访问者可以确保其计算机不会被该内容损坏。程序员可以编写一次程序,并且该程序可以在提供Java运行时环境的任何计算机上运行。

1.2。Java虚拟机

Java虚拟机是Java平台的基石。它是技术的组成部分,负责硬件和操作系统的独立性,已编译代码的小尺寸以及保护用户免受恶意程序攻击的能力。

Java虚拟机是抽象的计算机。像真正的计算机一样,它具有指令集并在运行时操作各种内存区域。使用虚拟机实现编程语言是相当普遍的。最知名的虚拟机可能是UCSD Pascal的P代码计算机。

由Sun Microsystems,Inc.完成的Java虚拟机的第一个原型实现模拟了由类似于现代个人数字助理(PDA)的手持设备托管的软件中的Java虚拟机指令集。Oracle当前的实现在移动设备,桌面设备和服务器设备上模拟Java虚拟机,但是Java虚拟机不采用任何特定的实现技术,主机硬件或主机操作系统。它不是固有解释的,但是也可以通过将其指令集编译为硅CPU的指令集来实现。也可以用微码或直接在硅中实现。

Java虚拟机对Java编程语言一无所知,仅对特定的二进制格式(class文件格式)一无所知。一个class文件包含的Java虚拟机指令(或字节码)和符号表,以及其它辅助信息。

为了安全起见,Java虚拟机对class文件中的代码施加了严格的语法和结构约束。但是,classJava虚拟机可以托管任何具有可用有效文件表示的功能的语言。受通用的独立于机器的平台的吸引,其他语言的实现者可以将Java虚拟机作为其语言的交付工具。

此处指定的Java虚拟机与Java SE 8平台兼容,并且支持Java语言规范Java SE 8 Edition中指定的Java编程语言。

1.3。规范的组织

第2章概述了Java虚拟机体系结构。

第3章将用Java编程语言编写的代码编译引入Java虚拟机的指令集中。

第4章指定了 class文件格式,即与硬件和操作系统无关的二进制格式,用于表示已编译的类和接口。

第5章指定Java虚拟机的启动以及类和接口的加载,链接和初始化。

第6章指定Java虚拟机的指令集,以操作码助记符的字母顺序显示指令。

第7章提供了按操作码值索引的Java虚拟机操作码助记符表。

在第二版 中的Java ®虚拟机规范,第二章给了这是旨在支持Java虚拟机的规范的Java编程语言的一个概述,但本身不是规范的一部分。在Java虚拟机规范Java SE 8版中,读者可以参考 Java语言规范Java SE 8版中有关Java编程语言的信息。格式的引用:(JLS§xy)指出了在哪里需要这样做。

在的第二版 的爪哇®虚拟机规范,第8章详述,与共享主存储器解释Java虚拟机线程的相互作用的低级别的操作。在Java虚拟机规范Java SE 8版中,读者可以参考Java语言规范Java SE 8版的第17章 以获取有关线程和锁的信息。第17章反映了JSR 133专家组制作的Java内存模型和线程规范

1.4。符号

在整个规范中,我们指的是从Java SE平台API提取的类和接口。每当我们使用单个标识符N引用类或接口(在示例中声明的对象除外)时,预期的引用就是对包中 名为N的类或接口的引用java.lang。对于非包中的类或接口,我们使用完全限定名称java.lang

每当我们引用包java 或其任何子包中声明的类或接口时,预期的引用就是由引导类加载器(第5.3.1节)加载的类或接口。

每当我们引用名为的包的子包时java,预期的引用就是由引导类加载器确定的那个子包。

本规范中字体的使用如下:

  • 一个fixed width字体用于Java虚拟机的数据类型,异常错误,class文件结构,Prolog的代码和Java代码片断。

  • 斜体用于Java虚拟机的“汇编语言”,其操作码和操作数,以及Java虚拟机的运行时数据区域中的项目。它也用于引入新术语并仅用于强调。

为了阐明规范而设计的非规范性信息以较小的缩进文本形式给出。

这是非规范性信息。它提供了直觉,理由,建议,示例等。

1.5。回馈

请读者在报告技术错误和含糊不清的的Java ®虚拟机规范 来jls-jvms-spec-comments@openjdk.java.net

有关class通过javac(Java编程语言的参考编译器)生成和操作文件的问题,可以发送给compiler-dev@openjdk.java.net

标签: