为什么写?
一个是为了更好更系统的学习一门技能, 学习的过程就是, 学习->模拟->分享->成为自己的知识点。
二个是为了坚持的做一些事情。 比方说。。。
本系列文章全部原创。 转载请著名出处。
本篇内容预习:
- 一、JVM的概念
- 二、JVM的发展史
- 三、JVM的种类
- 四、JVM的实现
一、JVM的概念
JVM:
Java Virtual Machine,意为Java虚拟机。
虚拟机:
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。 以上说明来自百科。
为什么会有虚拟机的概念。 应该注意Java在宣传的时候说的一个广告语。 “一次编译,到处运行”, 在计算机系统的发展来说, 不同的体系下, 和时代的发展下总会有不同的演变。 这也就导致了不同体系下的软件就不能通用。 所以为了能够通用Java的SUN公司(现在暂时是Oracle), 就在系统层的基础上, 编写了一套虚拟机, 实现写一次代码, 可以到不同的系统体系中去运行。
二、JVM的发展史
这里主要介绍面向桌面和服务器的商用虚拟机。其实除此之外还有面向移动和嵌入式市场的VM,以及研究用的VM,种类繁多, 就不一一介绍,
Sun Classic
JDK1.0时Sun的官方/世界上第一款商用虚拟机,但现在它的使命已经终结,最后版本JDK1.3
Classic只能使用纯解释器方式来运行class代码,如果想使用JIT编译器就必须进行外挂。但是加入外挂了JIT那么解释器就不工作了
Exact VM
仅在JDK1.2时在Solaris平台存在过,已经有现代高性能虚拟机的雏形
后来再与HotSpot在公司内部的争论中失败
HotSpot VM
现在Sun JDK和OpenJDK所带JVM,是正统和运用最广泛的VM,收购自一家小公司
最重要的就是热点HotSpot代码探测技术
BEA JRockit VM
专注服务器领域,所以没有解释器,只有编译器
先进的垃圾收集器和MissionControl服务套件。
现在已被Sun(Oracle)收购,Oracle在JDK1.8已经将JRockit好的东西合并到了HotSpot上了,JRockit最后只走到了JDK1.6
IBM J9 VM
主要作为IBM公司Java产品的平台,与其产品联合使用效果好,如:WebSphere
三、JVM的种类
1. KVM (又称JKVM)
它是最小的运行时环境的一部分,包含在 Java 2 Platform, Micro Edition(J2ME 平台)软件中,适用于那些内存和 CPU 能力有限的设备。移动电话、寻呼机和个人数字助理 (PDA) 中通常会运行 KVM,用以提供常见的计算功能。 KVM 类似于 JVM(Java 虚拟机),它也包含运行用 Java 技术编写的应用程序和小应用程序的引擎。KVM 适用于无线电话和移动设备,而 JVM 则适用于计算机。Java 2 Platform, Standard Edition(J2SE 平台)包含 JRE、Plug-in 软件和 JVM。 J2ME 技术使用包括 KVM 在内的许多不同大小的虚拟机。KVM 只是 CLDC(有限连接设备配置)的一项应用,它用于在移动设备上运行 Java 软件。 J2ME 技术还包括移动信息设备套件 (MIDP),该套件通常用于为移动设备(例如,蜂窝电话和双向寻呼机)编写应用程序。
2. CDC/CLDC/HotSpot
HotSpot VM是Oracle/Sun JDK以及OpenJDK里的JVM实现, 是JDK默认的虚拟机环境。
3. JRockit
已经和HotSpot合并。
4. Apache Harmony
最后的一个版本是 Apache Harmony v5.0 编译于 2010年。 非主流的JVM
四、JVM的实现
JVM定义了控制Java代码解释执行和具体实现的五种规格,它们是:
JVM指令系统
JVM寄存器
JVM 栈结构
JVM 碎片回收堆
JVM 存储区
具体的内容会在接下来的文章中详解。
以上的是JVM的一个简单的认识。 还有很多的细节没有提及。 而且每一个产品都是有很多的是非由来。 就不一一类述。 学习的路上, 就需要多坚持一下。 这样你才能不会对过往痛忆。