JVM学习-01-走近Java
第一章、走近Java

Java技术体系
如果仅从传统意义上来看,JCP官方所定义的Java技术体系包括了以 下几个组成部分:
- Java程序设计语言
- 各种硬件平台上的Java虚拟机实现
- Class文件格式
- Java类库API
- 来自商业机构和开源社区的第三方Java类库
JDK(Java Development Kit):把Java程序设计语言、Java虚拟机、Java类库。
JRE(Java Runtime Environment):把Java类库中的Java SE API子集、Java虚拟机。

以上是根据Java各个组成部分的功能来进行划分,如果按照技术所服务的领域来划分,或者按照 技术关注的重点业务来划分的话,那Java技术体系可以分为以下四条主要的产品线:
- Java Card:支持Java小程序(Applets)运行在小内存设备(如智能卡)上的平台。
- Java ME(Micro Edition):支持Java程序运行在移动终端(手机、PDA)上的平台,对Java API 有所精简,并加入了移动终端的针对性支持,这条产品线在JDK 6以前被称为J2ME。有一点读者请勿 混淆,现在在智能手机上非常流行的、主要使用Java语言开发程序的Android并不属于Java ME。
- Java SE(Standard Edition):支持面向桌面级应用(如Windows下的应用程序)的Java平台,提 供了完整的Java核心API,这条产品线在JDK 6以前被称为J2SE。
- Java EE(Enterprise Edition):支持使用多层架构的企业应用(如ERP、MIS、CRM应用)的 Java平台,除了提供Java SE API外,还对其做了大量有针对性的扩充,并提供了相关的部署支持, 这条产品线在JDK 6以前被称为J2EE,在JDK 10以后被Oracle放弃,捐献给Eclipse基金会管理,此后被 称为Jakarta EE。
Java发展史
Java编程语言是由詹姆斯·高斯林(James Gosling)于1991(实际1995)年创造出来的。詹姆斯·高斯林(James Gosling)于1955年出生于加拿大,是一位计算机编程天才。在卡内基·梅隆大学攻读计算机博士学位时,他编写了多处理器版本的Unix操作系统

1991年4月,由James Gosling博士领导的绿色计划(Green Project)开始启动,此计划最初的目标 是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个计划 的产品就是Java语言的前身:Oak(得名于James Gosling办公室外的一棵橡树)。Oak当时在消费品市 场上并不算成功,但随着1995年互联网潮流的兴起,Oak迅速找到了最适合自己发展的市场定位并蜕 变成为Java语言。

- 1991年4月:由James Gosling博士领导的绿色计划,发明Oak语言
- 1995年5月23日:Java语言(Oak语言改名)和Java平台在Sun Microsystems的JavaOne会议上正式发布。在1995年5月推出的Java版本,仅仅只是Alpha和Beta版,API极其不稳定。
- 1996年1月23日:Sun 发布 JDK 1.0 版本,这是Java发展历程中的重要里程碑,标志着Java称为一个独立的开发工具。JDK 1.0是纯解释运行,使用外挂JIT,性能比较差,运行速度慢。
- ...
Java虚拟机家族
-
虚拟机始祖:Sun Classic/Exact VM
- 1996年1月23日,Sun发布JDK 1.0,Java语言首次拥有了商用的正式运行环境,这个JDK中所带的 虚拟机就是Classic VM。
- 这款虚拟机只能使用纯解释器方式来执行Java代码,如果要使用即时编译器那 就必须进行外挂,但是假如外挂了即时编译器的话,即时编译器就会完全接管虚拟机的执行系统,解 释器便不能再工作了。
- Sun的虚拟机团队努力去解决Classic虚拟机所面临的各种问题,提升运行效率,在JDK 1.2时,曾 在Solaris平台上发布过一款名为Exact VM的虚拟机,它的编译执行系统已经具备现代高性能虚拟机雏 形,如热点探测、两级即时编译器、编译器与解释器混合工作模式等
- Exact VM因它使用准确式内存管理(Exact Memory Management,也可以叫Non-Con-servative/Accurate Memory Management)而得名。
-
武林盟主:HotSpot VM
-
它是Sun/OracleJDK和OpenJDK中的默认Java虚拟 机,也是目前使用范围最广的Java虚拟机
-
具有热点代码探测技术、准确式内存管理的优点
-
是由一家名为“Longview Technologies”的小公司设计
-
在1997年收购了Longview Technologies公司,从而获得了 HotSpot虚拟机
-
1999年4月27日,HotSpot虚拟机诞生。Hot-Spot虚拟机刚发布时是作为 JDK 1.2的附加程序提供的,后来它成为JDK 1.3及之后所有JDK版本的默认Java虚拟机。
(1998年12月4日,JDK迎来了一个里程碑式的重要版本:工程代号为Playground(竞技场)的JDK 1.2
2000年5月8日,工程代号为Kestrel(美洲红隼)的JDK 1.3发布。)
-
-
小家碧玉:Mobile/Embedded VM
- Sun/Oracle公司所研发面对移动和嵌入式市场的虚拟机
- Oracle公司在Java ME这条产品线上的虚拟机名为CDC-HI(C Virtual Machine, CVM)和CLDC-HI(Monty VM)
-
天下第二:BEA JRockit/IBM J9 VM
- BEA将其发展为一款专门为服务器硬件和服务端应用场景高度优化的虚拟机,由 于专注于服务端应用,它可以不太关注于程序启动速度,因此JRockit内部不包含解释器实现,全部代 码都靠即时编译器编译后执行。
- JRockit的垃圾收集器和Java Mission Control故障处理套件 等部分的实现,在当时众多的Java虚拟机中也处于领先水平。JRockit随着BEA被Oracle收购,现已不再 继续发展,永远停留在R28版本,这是JDK 6版JRockit的代号。
- 与BEA JRockit只专注于服务端应用不同,IBM J9虚拟机的市场 定位与HotSpot比较接近,它是一款在设计上全面考虑服务端、桌面应用,再到嵌入式的多用途虚 拟机
-
软硬合璧:BEA Liquid VM/Azul VM
- Liquid VM也被称为JRockit VE(Virtual Edition,VE),它是BEA公司开发的可以直接运行在自家 Hypervisor系统上的JRockit虚拟机的虚拟化版本,Liquid VM不需要操作系统的支持,或者说它自己本 身实现了一个专用操作系统的必要功能,如线程调度、文件系统、网络支持等。
- Azul VM是Azul Systems公司在HotSpot基础上进行大量改进,运行于Azul Systems公司的专有硬 件Vega系统上的Java虚拟机,每个Azul VM实例都可以管理至少数十个CPU和数百GB的内存的硬件资 源,并提供在巨大内存范围内停顿时间可控的垃圾收集器(即业内赫赫有名的PGC和C4收集器),为 专有硬件优化的线程调度等优秀特性。
-
挑战者:Apache Harmony/Google Android Dalvik VM
- Harmony虚拟机(准确地说是Harmony里的DRLVM)和Dalvik虚拟机只能称作“虚拟 机”,而不能称作“Java虚拟机”
-
没有成功,但并非失败:Microsoft JVM及其他
更多请看《深入理解java虚拟机》书 39页
浙公网安备 33010602011771号