Appearance
第1章 引言
提示
来自deepseek解释
原文链接:https://docs.oracle.com/javase/specs/jvms/se17/html/index.html
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公司完成,它在类似当时个人数字助理(PDA)的手持设备上,以软件方式模拟了Java虚拟机的指令集。Oracle目前的实现在移动设备、桌面设备和服务器设备上模拟Java虚拟机,但Java虚拟机本身并不假定任何特定的实现技术、主机硬件或主机操作系统。它本质上不是解释型的,但同样可以通过将其指令集编译为硅CPU的指令集来实现。它也可以用微码或直接用硅来实现。
Java虚拟机对Java编程语言一无所知,只认识一种特定的二进制格式——class文件格式。class文件包含Java虚拟机指令(或称为字节码)、符号表以及其他辅助信息。为了安全起见,Java虚拟机对class文件中的代码施加了严格的语法和结构约束。然而,任何功能可以用有效的class文件表示的语言,都可以在Java虚拟机上运行。受到这一普遍可用、平台无关的平台的吸引,其他语言的实现者可以将Java虚拟机作为其语言的交付载体。
此处规范的Java虚拟机与Java SE 17平台兼容,并支持《Java语言规范(Java SE 17版)》中规定的Java编程语言。
1.4 符号说明
在本规范中,我们引用了来自Java SE平台API的类和接口。每当我们使用单个标识符N来引用一个类或接口(示例中声明的除外)时, intended引用指的是java.lang包中名为N的类或接口。对于java.lang以外的包中的类或接口,我们使用其完全限定名。每当我们引用java包或其任何子包中声明的类或接口时, intended引用指的是由引导类加载器加载的该类或接口(参见§5.3.1)。每当我们引用名为java的包的子包时, intended引用指的是由引导类加载器确定的该子包。
本规范中字体的使用如下:旨在阐明规范的非规范性信息,以较小的缩进文本给出。
这是非规范性信息。它提供了直觉、原理、建议、示例等。
说明:
- 原文中
class、java.lang等专有名词保留原文格式。 - 内部交叉引用(如
[§5.3.1])保留原链接。 - 非规范性说明部分按原文以缩进引用块呈现。