知识&技术&梦想 知识&技术&梦想

Java小白超神之路 - 1.1 JVM 的认识

为什么写?

一个是为了更好更系统的学习一门技能, 学习的过程就是, 学习->模拟->分享->成为自己的知识点。 二个是为了坚持的做一些事情。 比方说。。。 本系列文章全部原创。 转载请著名出处。

本篇内容预习:

  • 一、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的一个简单的认识。 还有很多的细节没有提及。 而且每一个产品都是有很多的是非由来。 就不一一类述。 学习的路上, 就需要多坚持一下。 这样你才能不会对过往痛忆。
大纲