JVM虚拟机规范——1.简介

1.1 历史

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

万维网的普及使这些属性变得更加有趣。Web浏览器使数百万人能够以更简单的方式上网和访问富媒体内容。终于有一种媒介,无论你使用的是什么机器,也不管它是连接到快速网络还是慢速调制解调器,你所见所闻本质上是相同的。

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

HotJava浏览器首先展示了Java编程语言和平台的有趣特征,它可以在HTML页面中嵌入程序。程序与它们出现的HTML页面一起被透明下载到浏览器中。在被浏览器接受之前,程序会经过检查以确保它们是安全的。与HTML页面一样,编译后的程序与网络和主机无关。这些程序的行为方式相同,无论它们来自哪些,或者它们被加载到什么类型的机器上并在其上运行。

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

1.2 Java虚拟机

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

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

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

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

        为了安全起见,Java虚拟器对class文件中的代码施加了强大的语法和结构约束。但是,任何具有可以用有效class文件表示的功能的语言都可以由Java虚拟机托管。被一个普遍可用的、独立于机器的平台所吸引,其他语言的实现者可用将Java虚拟机作为他们语言的支付工具。

        此处指定的Java虚拟机与Java SE 18平台兼容,并支持Java语言规范Java SE 18版中指定的Java语言。

1.3 规范的组织

第二章 概述了Java虚拟机架构;

第三章 介绍了将Java编程语言编写的代码编译到Java虚拟机的指令集中;

第四章 规定了class文件格式,即用于表示已编译类和接口的独立于硬件和操作系统的二进制格式。

第五章 详细说明了Java虚拟机的启动以及类和接口的加载、链接和初始化。

第六章 详细说明了Java虚拟机的指令集,按照操作码助记符的字母顺序呈现指令。

第七章 给出了一个按操作码值索引的Java虚拟机操作码助记符。

第八章 详细介绍了解释Java虚拟机线程与共享内存的交互的低级操作。

1.4 符号

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

        每当我们引用在包java或者其任何子包中声明的类或接口时,预期的引用是由引导类加载器加载的该类或接口。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值