JVM学习笔记之JVM发展历史

以下为博主的对JVM发展历程的了解

当然可能很多地方并不全面,以下为博主学习jvm的笔记,还有很多不足的地方欢迎大家评论区留言探讨!好了,咱们进入主题

将JVM之前,以博主理解的方式解释一下什么是解释器和JIT编译器

先上博主画的简图
JVM学习笔记之JVM发展历史_第1张图片
在JVM的存储引擎模块,有解释器,JIT编译器,和垃圾回收。
解释器:将处理好的字节码解释为机器指令,然后给cpu运行。
JIT编译器:即时编译器,它的作用是将代码先编译一遍,变成精简的机器指令,然后交给cpu去执行。

Sun ClassicVM

1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。9月,约8.3万个网页应用了Java技术来制作。10月,Sun公司发布了Java平台的第一个即时(JIT)编译器。
Java1.0最原始的编译器为 Sun ClassicVM 虚拟机,该虚拟机在jdk1.4完全被淘汰,该虚拟机的执行引擎只包含解释器,不包含JIT编译器。如果想使用JIT编译器,就得采用外挂的方式进行,一旦采取这种方式,原来的解释器就不会工作了。

Exact VM

为了解决ClassicVM的问题,jdk1.2时,sun提供了此虚拟机,该虚拟机可以知道内存中某个位置的数据具体是什么类型,它具备高性能的虚拟机雏形,解释器和编译器的混合工程,让编译器去编译热点代码然后缓存起来,提高性能,但该虚拟机只在Solaris平台短暂使用,其他平台仍然是Classic VM,还没正式投入使用就被HotSpot VM给替代了。

HotSpot VM

JDK1.3的默认虚拟机就是HotSpotVM虚拟机了,其它两个虚拟机都没有方法区的概念,HotSpotVM虚拟机的名字的意义就是热点代码探测技术,通过计数器找到最具编译价值的代码,触发即时编译或栈上替换,通过编译器和解释器协同工作,在最优化的程序响应时间与最佳执行性能中取得平衡

JRockit VM

专注于服务器端的应用,不关注程序的启动速度,所以该虚拟机不包含解释器实现,所有代码都是通过即时编译器编译后执行,因此JRockitJ VM号称是世界上最快的虚拟机,JRockit面向延迟敏感型应用的解决方案JRockit Real Time提供以毫秒或微秒级的JVM响应时间,适合财务前端办公、军事指挥与控制和电信网络的需要。使用JRockit产品,客户已经体验到了显著的性能提高(一些超过了70% )和硬件成本的减少(达50%)

J9

良好的设计让 J9 VM 具有高可配置性和可扩展性,IBM 把它用在各种平台各个版本的 JDK 中,IBM i 只是 IBM 这些平台中的一个。2017年左右,IBM发布了开源的J9 VM ,命名为Open J9 ,交给Eclipse基金会管理,并更名 Eclipse OpenJ9,OpenJ9 擅长于内存管理,同时针对容器化做了很多工作,它可以更好的利用内存,并且在docker容器中运行的相对稳定

Graal VM

2018年4月,Oracle Labs 公开了Graal VM,号称“Run Programs Faster Anywhere”,Graal VM是在HotSpot VM基础上增强而形成跨语言的全栈虚拟机,可以作为任何语言的运行平台使用,JS,Ruby ,Python,R等等。并且支持不同语言中混用对方的接口和对象,支持这些语言使用已经编译好的本地库文件,工作原理是将这些语言的源代码或者源代码编译后的中间格式,通过解释器转换为能被Graal VM接受的中间表示。Graal VM 提供Truffle工具快速构建面向一种新语言的解释器,在运行时还能进行即时编译优化,获得比原生编译器更优秀的执行效率。

好了,本期的内容就到这里了,下一期笔记为类加载子系统

你可能感兴趣的:(java,jvm,JVM优化)