JVM发展史

2022/4/1 6:21:21

本文主要是介绍JVM发展史,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一:Java技术体系

根据 Java 各个组成部分的功能来进行划分的话,可以根据JDK和JRE进行划分。
JDK(Java开发工具包)
 JDK是整个Java的核心,是用于支持Java程序开发的最小环境,最主流的JDK是Sun公司发布的JDK。JDK包含了Java运行环境(JRE),还附带了一系列开发、诊断工具(Java类库),能够创建和编译程序。

JRE(Java 运行环境)
 JRE是运行已编译Java程序所需的所有内容的集合。在开发工具中运行,双击执行jar文件运行,命令行运行,网页中运行Java代码都离不开JRE,JRE包含了Java虚拟机和Java核心类库、Java命令等其他基础构建,不能用于创建新程序。

JVM(Java虚拟机)
 Java 虚拟机是运行Java字节码的虚拟机。JVM 有针对不同系统的特定实现(Windows,Linux,macOS)。在运行Java程序之前,需要设计一个面向Java语言特性的虚拟机来进行转换,并通过编译器将Java程序转换为该虚拟机所能识别的指令序列,也称为字节码,有了字节码,就可以在不同的平台上的虚拟机实现运行,实现“一次编译,处处运行”。

二:Java发展史

JDK 1.0
 Java在1995年由Oak语言改名而来正式发布Java 1.0版本,提出了"Write one, Run AnyWhere"的口号。提供了一个纯解释执行的Java虚拟机实现,代表的技术有:Java虚拟机、Applet、AWT等。
JDK 1.1
 1997年Sun公司发布JDK1.1,代表的技术有:JAR文件格式、JDBC、JavaBeans、RMI,语法上内部类(Inner Class)和反射都是在这个时候出现的。
JDK 1.2
 1998年JDK1.2发布,这个版本的Java技术拆分成了三个方向:面向桌面应用开发的J2SE、面向手机等移动终端开发的J2ME、面向企业级开发的J2EE。第一次内置了JIT(Just In Time)即时编译器,添加了常用的Collection集合。
JDK 1.3
 1999年HotSpot虚拟机发布,成为了JDK1.3之后的所有JDK版本的默认Java虚拟机,
2000年JDK1.3发布,主要在类库上进行了改进,使用CORBAIIOP来实现RMI通信协议。
JDK 1.4
 2002年JDK1.4发布,带来了很多新的技术特性,例如正则表达式、异常链、NIO、日志类、XML解析器和XSLT转换器等。
JDK 5
 2004年JDK5发布,摒弃了JDK1.x的命名方式,将版本号改为了JDK x的形式,语法上加入了自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach循环)等。虚拟机和API层面上,改进了内存模型、提供了java.util.concurrent并发包等。
JDK 6
 2006年JDK6发布,提供初步的动态语言支持、提供编译器注解处理器和微型HTTP服务器API,在锁、同步、垃圾收集、类加载等方面的实现了想当多的改动。
JDK 7
 JDK7在开发期间,Sun公司陷入危机无法推动JDK7的研发工作,在Oracle收购Sun公司之后开始研发,在2011年发布JDK7,提供了新的G1垃圾回收器、加强对非Java语言的支持、可并行的类加载架构等。
JDK 8
 2014年JDK8发布,JDK8提供了对Lambda表达式的支持,内置Nashorn JavaScript引擎的支持,新的时间、日期API,彻底移除HotSpot的永久代。
JDK 9
 2017年JDK9发布,增强了若干工具(JS Shell、JLink、JHSDB等),整顿了HotSpot各个模块各自为战的日志系统,支持Http2客户端API等。
JDK 10
 2018年3月JDK10发布,对内部进行了重构,例如统一源仓库、统一垃圾收集器接口、统一即时编译器接口
JDK 11
 2018年9月,JDK11发布,ZGC这种革命性垃圾收集器出现。
JDK 12
 2019年3月,JDK12发布,加入了Switch表达式、Java微测试套件。
JDK 13
 2019年9月,JDK13发布,ZGC中取消提交未使用的内存,重新实现Legacy Socket API。
JDK 14
 2020年3月,JDK14发布,添加了G1的NUMA感知内存分配,弃用了ParallerScavenge +SerialOld的垃圾收集器组合。删除并发标记请求(CMS)垃圾收集器。
JDK 15
 2020年9月,JDK15发布,移除了Nashorn JavaScript引擎,重新实现旧版DatagramSocket API。

Java虚拟机家族

HotSpot
 是OpenJDK中默认的Java虚拟机,也是目前使用范围最广的Java虚拟机。名称中的HotSpot指的就是它的热点代码探测技术,HotSpot虚拟机的热点代码探测能力可以通过执行计数器找出具有编译价值的代码,然后通知即时编译器以方法为单位进行编译。如果一个方法被频繁调用,或方法中有效循环次数很多,将会分别触发标准即时编译和栈上替换编译行为。
BEA JRockit
 BEA将JRockit发展为一款专门为服务器硬件和服务端应用场景高度优化的虚拟机,内部不包含解释器实现,全部代码都靠即时编译器编译后执行。
IBM J9 VM
 IBM J9虚拟机的职责分离与模块化做得比HotSpot更优秀。
Azul VM
Apache Harmony

小结

 Java虚拟机带来了一个托管环境,这个环境能够代替我们处理一些代码中冗长而且易出错的部分,例如自动内存管理、垃圾回收,还提供了例如数组越界、动态类型、安全检测等动态检测。使我们不必关注这些无关业务逻辑的代码。
 JVM可以由硬件实现,但更为常见的是各个现有平台上提供软件支持。这么做的意义在于程序被转换成了字节码,那么就可以在不同的平台上的虚拟机实现运行,实现“一次编译,处处运行”。



这篇关于JVM发展史的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程