一、JVM简介
JVM全称Java Virtual Machine ,Java虚拟机,也就是在计算机上虚拟一个计算机,且运行于内存中。计算机的基本构成:运算器、控制器、存储器、输入和输出设备,JVM也有同样成套的元素。为了达到“一次编译,随处运行”,JVM根据不同的CPU,翻译成不同的机器语言,因此java的命令集随处都可以运行。
1、 JVM与计算机的交互
JVM与计算机的交互如图:
从图中可以看出,JVM是运行在操作系统之上的,它与硬件没有直接交互。
JVM的种类
如图所示:
- 灰色部分的虚拟机基本已经退出市场,
- 红色部分的两款虚拟机运行于特定的硬件上
- 绿色部分由sun公司开发的两款虚拟机,均用于移动设备;另外两款由Apache和Google公司研发的两款虚拟机,并不能叫做“java虚拟机”,其中Dalvik VM目前是Android平台的核心组成部分。
想了解详细信息的,详见《深入理解java虚拟机》周志明著 第1章 1.4java虚拟机发展史
HotSpot VM & Open JDK & Oracle JDK
- HotSpot VM:在2006年的JavaOne大会上,Sun公司宣布最终会把Java开源,并在随后的一年,陆续将JDK的各个部分(其中当然也包括了HotSpot VM)在GPL协议下公开了源码,
并在此基础上建立了OpenJDK。这样,HotSpot VM便成为了Sun JDK和OpenJDK两个实现极度接近的JDK项目的共同虚拟机。 - 在2008年和2009年,Oracle公司分别收购了BEA公司和Sun公司,这样Oracle就同时拥有了两款优秀的Java虚拟机:JRockit VM和HotSpot VM。
– 以后本文提到内容,基于HotSpot VM探讨。