目前主流的Java虚拟机有哪些

常见的Java虚拟机有:1、Oracle的HotSpot虚拟机;2、BEA System的JRockit虚拟机;3、IBM公司的J9虚拟机。Oracle的HotSpot虚拟机,BEA System的JRockit虚拟机以及IBM公司的J9虚拟机,并称“三大商业Java虚拟机”。

目前主流的Java虚拟机有哪些-Worktile社区

一、Oracle的HotSpot虚拟机

提起 HotSpot VM,相信所有Java程序员都知道,它是 Sun JDK 和 OpenJDK 中所带的虚拟机,也是目前使用范围最广的Java虚拟机。但不一定所有人都知道的是,这个目前看起来“血统纯正”的虚拟机在最初并非由Sun公司开发,而是由一家名为“Longview Technologies”的小公司设计的;甚至这个虚拟机最初并非是为Java语言而开发的,它来源于Strongtalk VM,而这款虚拟机中相当多的技术又是来源于一款支持Self语言实现“达到C语言50%以上的执行效率”的目标而设计的虚拟机,Sun公司注意到了这款虚拟机在JIT编译上有许多优异的理念和实际效果,在1997年收购了Longview Technologies公司,从而获得了HotSpot VM。

HotSpot VM既继承了Sun之前两款商用虚拟机的优点(如前面提到的准确式内存管理),也有许多自己新的技术优势,如它名称中的HotSpot指的就是它的热点代码探测技术(其实两个VM基本上是同时期的独立产品,HotSpot还稍早一些,HotSpot一开始就是准确式GC,而Exact VM之中也有与HotSpot几乎一样的热点探测。为了Exact VM和HotSpot VM哪个成为Sun主要支持的VM产品,在Sun公司内部还有过争论,HotSpot打败Exact并不能算技术上的胜利),HotSpot VM的热点代码探测能力可以通过执行计数器找出具有编译价值的代码,然后通知JIT编译器以方法为单位进行编译。如果一个方法被频繁调用,或方法中有效循环次数很多,将会分别触发标准编译和OSR(栈上替换)编译动作。通过编译器与解释器恰当地协同工作,可以在优异化的程序响应时间与优异执行性能中取得平衡,而且无须等待本地代码输出才能执行程序,即时编译的时间压力也相对减小,这样有助于引入更多的代码优化技术,输出质量更高的本地代码。

在2006年的JavaOne大会上,Sun公司宣布最终会把Java开源,并在随后的一年,陆续将JDK的各个部分(其中当然也包括了HotSpot VM)在GPL协议下公开了源码,并在此基础上建立了OpenJDK。这样,HotSpot VM便成为了Sun JDK和OpenJDK两个实现极度接近的JDK项目的共同虚拟机。

在2008年和2009年,Oracle公司分别收购了BEA公司和Sun公司,这样Oracle就同时拥有了两款优异的Java虚拟机:JRockit VM和HotSpot VM。Oracle公司宣布在不久的将来(大约应在发布JDK 8的时候)会完成这两款虚拟机的整合工作,使之优势互补。整合的方式大致上是在HotSpot的基础上,移植JRockit的优异特性,譬如使用JRockit的垃圾回收器与MissionControl服务,使用HotSpot的JIT编译器与混合的运行时系统。

二、JRockit虚拟机

JRockit 虚拟机曾经号称是“世界上速度非常快的Java 虚拟机”(广告词,IBMJ9虚拟机也这样宣传过,总体上三大虚拟机的性能是交替上升的),它是BEA在2002年从AppealVirtual Machines 公司收购获得的Java 虚拟机。BEA将其发展为一款专门为服务器硬件和服务端应用场景高度优化的虚拟机,由于专注于服务端应用,它可以不太关注于程序启动速度,因此JRockit 内部不包含解释器实现,全部代码都靠即时编译器编译后执行。

一个全面的Java运行时解决方案组合,包括了行业非常快的标准Java解决方案。 大量的行业基准测试显示,基本JRockit JVM是世界上非常快的JVM。JRockit面向延迟敏感型应用的解决方案JRockit Real Time提供以毫秒或微秒级的JVM响应时间,适合财务前端办公、军事指挥与控制和电信网络的需要。使用JRockit产品,客户已经体验到了显著的性能提高(一些超过了70% )和硬件成本的减少(达50%)。

三、J9虚拟机

IBM J9 虚拟机并不是 IBM 公司少数的 Java 虚拟机,不过目前IBM 力发展无就J9。J9 这个名字最初只是内部开发代号而己,开始选定的正式名称是“IBM Technology fotJava Virtual Machine”,简称T4J,但这个名字太扬口,接受度远不 J9。J9 虚拟机最初是由IBM Otawa 实验室的一个 SmalTalk 虚机项目扩展而来,当时这个虚拟机有一个Bug是因为8KB常量值定义错误引起,工程师们花了很长时间终于发现并解决了这个错误,此后这个版本的虚拟机就被称为 K8,后来由其扩展而来、支持 Java 语言的虚拟机就被命名为J9。与BEA JRockit 只专注于服务端应用不同,IBM J9虚拟机的市场定位与HotSpot 比较接近,它是一款在设计上全面考虑服务端、桌面应用,再到嵌人式的多用途虚拟机,开发J9的目的是作为IBM公司各种Java 产品的执行平台,在和IBM产品(如IBM WebSphere 等)搭配以及在IBMAIX和Z/OS这些平台上部Java应用。

IBM J9直至今天仍旧非常活跃,IBM J9 虚拟机的职责分离与模块化做得比HotSpot 更优异,由J9虚拟机中抽象封装出来的核心组件库(包括垃圾收集器、即时编译器、诊断监控子系统等)就单独构成了IBM OMR项目,可以在其他语言平台如 Ruby、Python 中快速组装成相应的功能。从2016年起,IBM逐步将OMR项目和J9 虚拟机进行开源,完全开源后便将它们捐献给了Eclipse 基金会管理,并重新命名为 Eclipse OMR和OpenJ9。如果为了学习虚拟机技术而去阅读源码,更加模块化的OpenJ9代码其实是比HotSpot 更好的选择。如果为了使用Java虚拟机时多一种选择,那可以通过AdoptOpenJDK来获得采用OpenJ9搭配上OpenJDK其他类库组成的完整JDK。

除 BEA 和IBM公司外,其他一些大公司也号称有自己的专属JDK 和虚拟机,但是它们要么是通过从 Sun/Oracle 公司购买版权的方式获得的(如HP、SAP等),要么是基于OpenJDK项目改进而来的(如阿里巴巴、Twitter 等),都并非自己独立开发。

来源:本文为CSDN博主「No8g攻城狮」的原创文章
原文链接:https://blog.csdn.net/weixin_44299027/article/details/128154827

延伸阅读

什么是java虚拟机

虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

Java虚拟机(Java Virtual Machine 简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 具吸引力的特性之一。

文章标题:目前主流的Java虚拟机有哪些,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37536

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编
上一篇 2023年2月9日 下午1:41
下一篇 2023年2月9日 下午2:12

相关推荐

  • 编程要学习那些语言

    Python、JavaScript、Java 是当前最流行的编程语言。Python 因其简洁易读的语法和强大的库支持而广受欢迎,在数据科学、机器学习、网络开发等领域都有广泛应用。它的简洁性使得初学者易于上手,同时它的多功能性也让经验丰富的开发者能够用来构建复杂的系统。 一、PYTHON的普及与应用 …

    2024年5月21日
    26700
  • 编程应该如何自学

    编程自学成功的关键要素包括1、设定明确的学习目标,2、选择合适的学习资源,3、制定学习计划,4、动手实践,5、加入社区,以及6、持续的学习和复习。 其中,设定明确的学习目标尤为重要。明确目标意味着你知道自己想要通过学习编程达到什么样的水平,比如是希望能够构建自己的网站、成为一名数据分析师还是开发手机…

    2024年5月21日
    12800
  • 梯形图编程是什么

    梯形图编程是一种以图形化方式表示控制逻辑的编程方法,主要应用于自动化和控制系统领域。该方法使得逻辑控制过程直观、易理解,能够有效提高系统设计的效率和可靠性。其中,逻辑控制的图形化表现是其最为显著的特点之一。 在梯形图编程中,程序的每一段逻辑都被分解成若干个"梯级",每个梯级代表一…

    2024年5月21日
    10100
  • 为什么要学儿童编程

    在当今这个数字化时代,1、培养逻辑思维、2、增强解决问题的能力、3、激发创造力、4、为未来的职业生涯打基础等都是学习儿童编程的重要原因。培养孩子的逻辑思维尤其重要,因为这种能力是学习任何知识和技能的基础。通过编码,孩子们可以学会如何分析问题、拆解问题,并通过一步一步的逻辑顺序解决问题。这种思维模式在…

    2024年5月21日
    9800
  • 上海什么是少儿编程定制

    上海少儿编程定制是指专门为上海地区的儿童提供个性化、针对性强的编程教育服务。这种服务的核心在于1、满足儿童的个性化学习需求;2、与地方教育资源结合;3、提供符合当地教育标准的教学内容和方案。在上海,少儿编程定制通常涉及软件编程、硬件操控和项目实践,有助于培养孩子们的逻辑思维能力、解决问题能力和创新精…

    2024年5月21日
    7000

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部