乐趣区

关于java:Java虚拟机详解一简介

本系列博客咱们将以以后默认的支流虚拟机 HotSpot 为例,具体介绍 Java 虚拟机。以 JDK1.7 为主,同时介绍与 JDK1.8 的不同之处,通过 Oracle 官网以及各种文献进行整顿,并加以验证,力求保障这块常识的正确性,完整性。以下是本系列博客参考的相干文档:①、JDK1.7 虚拟机标准:https://docs.oracle.com/javas… JDK1.8 虚拟机标准:https://docs.oracle.com/javas… ②、Oracle Java SE 8 产品组件:https://docs.oracle.com/javas… ③、周志明老师:《深刻了解 Java 虚拟机:JVM 高级个性与最佳实际》④、陈涛老师:《HotSpot 实战》1、Oracle Java SE 8 产品组件 通过下面给定的地址,咱们能够看到如下这张图:

通常来说 Java 平台标准版(Java SE)包含 Java SE 开发工具包(JDK)和 Java SE 运行时环境(JRE)。JRE 提供了运行以 Java 编程语言编写的 applet 和应用程序所必须的库,Java 虚拟机和其余组件;JDK 包含 JRE 以及编译器和调试器等命令行开发工具,能够用来开发 Java 应用程序。PS:JDK 蕴含 JRE,咱们通常装置 JDK 的同时也会装置 JRE。2、虚拟机 上图的最下一行 Java 虚拟机是被 JRE 所蕴含,咱们在介绍 Java 虚拟机时,先理解虚拟机的概念。所谓虚拟机,其实就是一台虚构的机器,能够用来执行一系列虚构的命令。大体上虚拟机能够分为两种:零碎虚拟机和程序虚拟机。①、零碎虚拟机:是齐全对物理计算机的仿真,能够说和一台实在的 PC 操作系统没什么区别。比方罕用的 Vmare 以及 Visual Box 软件,通过这些软件可能模拟出具备残缺硬件零碎性能的、运行在一个齐全隔离环境中的残缺计算机系统。②、程序虚拟机:专门为执行单个计算程序而产生,最典型的就是 Java 虚拟机,在 Java 虚拟机中执行字节码文件命令。3、Java 虚拟机 理解了什么是虚拟机,咱们再看什么是 Java 虚拟机。Java 虚拟机能够看做是一台形象的计算机,如同实在的计算机那样,它有本人的指令集以及各种运行时内存区域,它与 Java 语言没有必然的分割,只与特定的二进制文件——class 文件格式关联(字节码文件),能够通过 Java 语言或者其余语言编写的程序编译成 class 文件,而后在 Java 虚拟机上运行。Java 虚拟机有以下二个特点:①、语言无关 Java 虚拟机只和 class 文件关联,所以只有你编写程序的语言可能编译成 class 文件,那么都可能在 Java 虚拟机上运行。

  ②、平台无关 Java 从诞生之初就宣传的一个口号:一次编写,到处运行。也就是说 Java 是一个跨平台的语言,那么 Java 是如何实现跨平台的呢?其实 Java 之所以跨平台是因为 Java 虚拟机的适配,不同的零碎实现不同的 Java 虚拟机。Java 虚拟机就相当于操作系统和应用程序之间的中介,每种平台装置适应该平台的 Java 虚拟机,那么咱们编写的程序当然可能在任意平台运行。

4、Java 虚拟机品种 商用虚拟机:①、Sun HotSpot 该虚拟机性能优越,是 sun JDK1.3 及当前所有 sun JDK 版本默认的虚拟机,应用最为宽泛,本系列博客就是以这个虚拟机为平台进行介绍。

②、BEA  JRockit JRockit 虚拟机是 BEA 公司于 2002 年从 Appeal Virtual Machines 收买取得的虚拟机。它是一款面向服务器硬件和服务端应用场景高度优化过得虚拟机,已经号称是“世界上速度最快的虚拟机”。因为专一于服务端利用,它的外部不蕴含解析器的实现,全副代码都靠即时编译器编译后执行。③、IBM J9 J9 虚拟机是 IBM 公司独自开发的高性能虚拟机,它并不独立发售,而是作为 IBM 公司各种产品的执行平台,IBM 把它定义为一个能够适应从嵌入式设施到大型企业级利用的、高可移植性的 Java 运行平台。④、Sun Classic  这个虚拟机很原始,是 JDK1.0 时代应用的 Java 虚拟机,是各种虚拟机的鼻祖,它的外部不存在即时编译器,只能应用纯解释的形式运行。⑤、Sun Exact  这是 Sun 公司在 HotSpot 之外的另一个虚拟机,在 JDK1.2 时代曾短暂的投入过商用,它和 HotSpot 同时开发,但最终被 HotSpot 取代。⑥、Apache Harmony  Harmony 是 Apache 软件基金会主导的、开源的、独立的、理论兼容与 JDK1.5 和 JDK1.6 的虚拟机实现,它间接催生了 Google Android 平台的 Dalvik 虚拟机,Android 的影响力当初有多大不必多说,目前曾经是最胜利的的数码设备通用平台。然而因为它的 TCK 受权问题,间接导致 Apache 与 Oracle 的破裂,从而退出了 JCP 组成,这是近代 Java 营垒遇到的最重大的决裂危机。嵌入式虚拟机 ①、Dalvik Dalvik 虚拟机是 Google 等厂商合作开发的 Android 挪动设施平台的外围组成部分之一,它执行 dex(Dalvik Executable) 文件而不是 class 文件,应用寄存器架构而不是栈架构,然而它的开发体系与 Java 有着千头万绪的关系,能够间接应用大部分的 Java API、dex 文件能够间接从 class 文件转化而来。并且在 Android 2.2 中提供了即时编译器的实现,性能大大的进步。②、KVM 在 Android、IOS 等智能手机操作系统呈现之前,曾广泛应用于手机平台的一种虚拟机。③、CDC/CLDC HotSpot CDC 和 CLDC HotSpot 别离是 Sun 针对高端嵌入式设施和中低端嵌入式设施的虚拟机,用来代替 KVM。

退出移动版