01 介绍

 The Java Virtual Machine Specification, Java SE 8

目录

一、一点历史

二、Java虚拟机

三、技术规范的组织结构

三、记号


一、一点历史

Java®编程语言是一种通用的、并发的、面向对象的语言。它的语法类似于C和C++,但它省略了许多使C和C++复杂、令人困惑和不安全的特性。Java平台最初是为了解决为网络消费者设备构建软件的问题而开发的。它被设计为支持多个主机架构,并允许软件组件的安全交付。为了满足这些需求,编译后的代码必须通过跨网络传输,在任何客户端上运行,并确保客户端运行是安全的。
万维网的普及使这些属性更加有趣。网络浏览器使数百万人能够以简单的方式上网和访问媒体丰富的内容。最后出现了一种媒介,无论你使用的机器是什么,还是连接到快速网络还是慢速调制解调器,你所看到的网络和听到的媒体本质上都是相同的。
网络爱好者很快发现,网络的HTML文档格式所支持的内容过于有限。HTML扩展,如表单,只突出了这些限制,同时明确表示没有任何浏览器可以包含用户想要的所有功能。可扩展性是答案。
HotJava浏览器首先展示了Java编程语言和平台的有趣属性,通过使在HTML页面中嵌入程序成为可能。程序与它们出现的HTML页面一起透明地下载到浏览器中。在被浏览器接受之前,程序会被仔细检查,以确保它们是安全的。与HTML页面一样,编译的程序是独立于网络和主机的。不管这些程序来自哪里,也不管它们被加载到什么类型的机器上运行,它们的行为都是一样的。
合并Java平台的Web浏览器不再局限于预定的功能集。访问包含动态内容的网页的访问者可以放心,他们的机器不会被这些内容损坏。程序员可以编写一次程序,它将在任何提供Java运行时环境的机器上运行。

二、Java虚拟机

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的包的子包时,预期的引用都是指向由引导类加载器确定的那个子包。

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

  • 固定宽度的字体用于Java虚拟机数据类型、异常、错误、类文件结构、序言代码和Java代码片段。
  • 斜体用于Java虚拟机的“汇编语言”、其操作码和操作数,以及Java虚拟机的运行时数据区域中的项。它也被用来引入新的术语和简单的强调。

非规范信息,旨在澄清规范,以较小的缩进文本(本文中灰色)给出。

This is non-normative information. It provides intuition, rationale, advice, examples, etc.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值