ad

打开《Java语言程序设计与应用》_从基础向熟练进发_1.1.4 Java 虚拟机

admin 74 2023-10-25

【摘要】 本书摘自《Java语言程序设计与应用》书中第1章,第1节,由徐俊武编著。

1.1.4 Java 虚拟

1.1.4.1 Java 虚拟机的基市概念

Java 虚拟机(Java Virtual Machine,JVM)是运行 Java 程序必不可少的机 制。编译后的Java程序指令不直接在硬件系统的 CPU 上执行,而是由JVM 执 行。JVM 是编译后的Java程序和硬件系统之间的接口,程序员可以把JVM 看 作虚拟的处理器。它不仅解释执行编译后的Java指令,而且还进行安全检查, 它是Java程序能在多平台间进行无缝移植的可靠保证,同时也是Java 程序的 安全检验引擎。

Java 虚拟机规范中给出了JVM 的定义:JVM 是在一台真正的机器上用软 件方式实现的一台假想机。 JVM 使用的代码存储在字节码文件(*.class)中。 JVM 的某些指令很像真正的 CPU 指令,包括算术运算、流控制和数组元素访 问等。

Java 虚拟机规范提供了编译所有Java代码的硬件平台。因为编译是针对 假想机的,所以该规范能让Java程序独立于平台。它适用于每个具体的硬件平 台,以保证能运行为JVM 编译的代码。 JVM 不但可以通过软件实现,而且可以 通过硬件实现。

JVM 的具体实现包括:指令集(等价于CPU 的指令集)、寄存器组、类文件 格式、栈、垃圾收集堆、内存区。

打开《Java语言程序设计与应用》_从基础向熟练进发_1.1.4 Java 虚拟机

JVM 的代码格式为压缩的字节码,因而效率较高。由JVM 字节码表示的 程序必须保持原来的类型规定。 Java 主要的类型检查是在编译时由字节码校 验器完成的。 Java 的任何解释器必须能执行符合JVM 定义的类文件格式的任 何类文件。

Java 虚拟机规范对运行时数据区域的划分及字节码的优化不做严格的限 制,它们的实现依平台的不同而有所不同,JVM 的实现叫作Java 运行时系统或 运行时环境(running environment),简称为运行时。 Java 运行时必须遵从 Java 虚拟机规范,这样,Java编译器生成的类文件才可被所有Java运行时系统下载。嵌入了Java运行时系统的应用程序,就可以执行Java程序了。目前有许多操 作系统和浏览器都嵌入了Java 运行时环境。

1.1.4.2 Java 虚拟机的性能

Java 在问世之初,因其没有完全优化,并且是解释执行的,所有Java程序的 运行效率较低。同时,有着较长发展史、已非常成熟的C++ 语言仍在开发界扮 演着主要角色,人们往往拿 C++ 的性能效率与刚诞生的Java 相比较,这显然 失之偏颇。

Java 解释器经过不断优化,字节码的执行速度已有很大提高。另外,在字 节码执行之前可以先经过JIT(just-in-time)编译器进行编译,生成针对具体平 台的本机执行代码。它的执行效率比解释执行的效率有了很大提高。现在许多 厂商都提供JIT 编译器,这项技术已非常成熟。由于字节码与平台无关,所以经 过变异的Java仍不失跨平台的特点

Hostpot 技术是Sun 公司推出的另一个有特色的技术。它提供对代码的运 行时选择,为的是从根本上解决Java 程序的效率问题。在程序执行时,Hostpot 对每个字节码指令进行分析,根据它的执行次数动态决定它的执行方式。比如, 一段指令需要多次重复执行,则立即编译为可执行代码,如果是只执行一次的简 单指令,且解释执行的效率更高,则使用解释执行的方式。有了这项技术,Java 的效率问题基本上可以得到解决。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 [email protected] 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:学习《零基础Java从入门到精通》_12.1 Java反射与注解
下一篇:打开《Java+EE应用开发实践教程》_读懂新的设计思路_2.3 实验七 Hibernate 持久层开发框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×