Java 虚拟机规范(Java SE 8) 第一章,赶紧收藏起来
1.1、简史
======
Java 语言是一门通用的、面向对象的、支持并发的程序语言。它的语法与 C 和 C++语言非常相似,但隐藏了 C 和 C++中许多复杂、深奥及不安全的语言特性。Java 平台最初用于解决基于网络的消费类设备上的软件开发问题,它在设计上就考虑到要支持部署在不同架构的主机上,并且不同组件之间可以安全地交互。面对这些需求,编译出来的本地代码必须解决不同网络间的传输问题,并能够运行在各种客户端上,而且还要是客户端确信这些代码是安全的。
伴随着万维网的盛行发生了一些十分有趣的事情:Web 浏览器允许数以百万级的用户共同在网上冲浪,以及通过很简单的方式访问丰富多样的内容。用户冲浪所使用的设备并不是其中的关键,它们仅仅是一种媒介,无论及其的性能如何,无论使用高速网络还是慢速的 modem(调制解调器),用户总能看到并听到同样的内容。
Sun 公司的 HotJava 浏览器是世界上第一款展现出 Java 语言某些有趣特性的浏览器,它允许把 Java 代码内嵌入 HTML 页面。显示 HTML 页面时,这些 Java 代码也会一并下载至浏览器中。而在浏览器获取这些代码之前,它们已经过严谨地检查以保证它们是安全的。与 HTML 语言一样,这些 Java 代码与网络和主机是完全无关的,无论代码来自哪里,在哪台机器上执行,它们执行时都能表现出一致的行为。
带有 Java 技术支持的网页浏览器将不再受限于它本身所提供的功能。浏览网页的用户可以放心地假定在他们机器上的动态内容不会损害其机器。软件开发人员编写一次代码,程序就可以运行在所有支持 Java 运行时环境的机器之上。
1.2、Java 虚拟机
===========
Java 虚拟机是整个 Java 平台的基石,是 Java 技术用以实现硬件无关与操作系统无关的关键部分,是 Java 语言生成极小体积的编译代码的运行平台,是保障用户机器免于恶意代码损害的屏障。
Java 虚拟机可以看做一台抽象的计算机。如同真实的计算机那样,它有自己的指令集以及各种运行时内存区域。使用虚拟机来实现一门程序设计语言是相当常见的,业界中流传最为久远的虚拟机可能就是 UCSD Pascal 的 P-Code 虚拟机。
第一个 Java 虚拟机的原型机是由 Sun Microsystems 公司实现的,它用在一种类似 PDA(Personal Digital Assistant,俗称掌上电脑)的手持设备上,以仿真实现 Java 虚拟机指令集。时至今日,Oracle 已将许多 Java 虚拟机实现应用于移动设备、台式机、服务器等领域。但 Java 虚拟机并不局限于特定的实现技术、主机硬件和操作系统。Java 虚拟机也不局限于特定的代码执行方式,它虽然不强求使用解释器来执行程序,但是也可以通过把自己的指令集编译为实际 CPU 的指令来实现。它可以通过微代码(microcode)来实现,甚至可以直接在 CPU 中实现。
Java 虚拟机与 Java 语言并没有必然的联系,它只与特定的二进制文件格式—class 文件格式所关联。class 文件包含了 Java 虚拟机指令集(或者称为字节码(bytecode))和符号表,以及其他一些辅助信息。
基于安全方面的考虑,Java 虚拟机在 class 文件中施加了许多强制性的语法和结构化约束,凡是能用 class 文件正确表达出来的编程语言,都可以放在 Java 虚拟机里面执行。由于它是一个通用的、机器无关的执行平台,所以其他语言的实现者都可以考虑将 Java 虚拟机作为那些语言的交付媒介。
评论