Java虚拟机(JVM)家族发展史及版本对比

news2025/4/25 20:59:40

Java虚拟机(JVM)家族发展史及版本对比在这里插入图片描述


一、JVM家族发展史

1. 早期阶段(1996-2000)
  • Classic VM(Java 1.0-1.1)

    • 厂商:Sun Microsystems(Oracle前身)。
    • 特点
      • 首个JVM实现,支持基本的字节码解释执行。
      • 无JIT编译器,性能较低。
      • 垃圾回收简单(标记-清除算法)。
    • 适用场景:早期Java Applet和简单应用。
  • Just-In-Time(JIT) VM(Java 1.1.4+)

    • 改进:引入JIT编译器,将热点代码编译为本地代码提升性能。
    • 局限性:仅对特定方法优化,整体性能仍有限。

2. 成熟阶段(2000-2010)
  • HotSpot JVM(Java 1.3+,2000年)
    • 厂商:Sun Microsystems(后由Oracle维护)。
    • 核心特性
      • 分代垃圾回收(Young/Old代划分)。
      • 自适应优化(Adaptive Optimization,动态调整JIT策略)。
      • Server模式与Client模式(高性能服务器 vs. 轻量级客户端)。
    • 关键版本
      • Java 5(1.5):引入并发标记清除(CMS)垃圾回收器。
      • Java 6:优化JIT编译器,支持动态编译更多代码。
      • Java 7:改进G1垃圾回收器(实验性)。

3. 现代化阶段(2010至今)
  • HotSpot JVM持续演进

    • Java 8-11
      • G1成为默认GC(Java 9起)。
      • ZGC(可中断暂停GC)(Java 11预览,Java 15正式版)。
      • Shenandoah GC(Java 12引入,低延迟优化)。
    • Java 14+
      • Vector API(SIMD指令优化)。
      • 虚拟线程(Virtual Threads)(Java 19正式版,轻量级并发)。
  • 开源与生态扩展

    • OpenJDK(2006年开源):
      • 成为JVM实现的开源基准,Oracle JDK基于此构建。
      • 社区贡献者包括Red Hat、Amazon、IBM等。
    • 替代JVM实现
      • GraalVM(Oracle,2017年):
        • 支持多语言(Java/JavaScript/Ruby等)。
        • Graal编译器:AOT编译(Substrate VM)提升启动速度。
        • Truffle框架:动态语言优化。
      • Eclipse OpenJ9(IBM,2017年开源):
        • 低内存占用,适合微服务和容器化部署。
        • 支持JIT和AOT混合编译。
      • Azul Zing(Azul Systems,2004年):
        • 专为低延迟设计,C4垃圾回收器(无停顿GC)。
        • 适用于高频交易、实时系统。
  • 移动与嵌入式JVM

    • Dalvik VM(Android 1.5-4.4):
      • 针对移动设备优化,执行.dex文件(非.class)。
      • ART(Android Runtime)(Android 5.0+):
        • AOT编译(应用安装时编译为原生代码)。
        • 替代Dalvik,提升性能和内存效率。

二、关键虚拟机对比

1. HotSpot JVM(Oracle JDK/OpenJDK)
  • 适用场景:企业级应用、服务器端、微服务。
  • 核心特性
    • 垃圾回收器:Serial、Parallel、CMS、G1、ZGC、Shenandoah。
    • JIT编译:C1(客户端)、C2(服务端)。
    • 模块化(Java 9+):JPMS支持模块化JDK。
  • 优势:生态成熟、兼容性高、社区支持强。

2. GraalVM
  • 适用场景:混合语言应用、高性能微服务、AOT编译场景。
  • 核心特性
    • 多语言支持:Java、JavaScript、Python、Ruby等。
    • Substrate VM:AOT编译生成独立本机镜像(启动快、占用小)。
    • Graal编译器:替代C2编译器,优化复杂代码。
  • 优势:跨语言协作、启动性能优化。

3. Eclipse OpenJ9
  • 适用场景:容器化部署、内存敏感环境、云原生应用。
  • 核心特性
    • 低内存占用:比HotSpot减少30%-50%内存。
    • JIT/AOT混合编译:提前编译部分代码提升启动速度。
    • Eclipse基金会维护:与Eclipse生态深度集成。
  • 优势:资源效率高、适合Kubernetes等容器环境。

4. Azul Zing
  • 适用场景:低延迟系统(如金融交易、实时分析)。
  • 核心特性
    • C4垃圾回收器:停顿时间<1ms(无STW)。
    • 无限制堆内存:支持TB级堆,适合大数据应用。
    • 性能分析工具:实时监控GC和线程行为。
  • 优势:极致低延迟,适合高频交易等场景。

5. Android ART
  • 适用场景:Android应用。
  • 核心特性
    • AOT编译:应用安装时编译为原生代码。
    • 增量编译:运行时优化未编译部分。
    • Profilo工具:性能分析与调试。
  • 优势:启动快、运行效率高,替代Dalvik的升级版。

6. IBM J9(旧版,被OpenJ9取代)
  • 历史意义
    • IBM早期JVM实现,后开源为OpenJ9。
    • 支持Z/OS等大型主机系统。

三、表格总结:JVM家族版本及特性对比
虚拟机名称厂商/来源发布时间核心特性适用场景优势与局限
Classic VMSun Microsystems1996纯解释执行,无JIT早期Java Applet性能低,仅基础功能支持
HotSpot JVMOracle/OpenJDK2000分代GC、JIT编译、G1/ZGC/Shenandoah、模块化(Java 9+)企业级应用、服务器生态成熟,但资源占用较高
GraalVMOracle2017多语言支持、AOT编译(Substrate VM)、Graal编译器混合语言、微服务、AOT场景需学习成本,某些GC特性依赖HotSpot
Eclipse OpenJ9IBM/Eclipse2017低内存占用、JIT/AOT混合编译容器化、云原生性能调优复杂,社区支持有限
Azul ZingAzul Systems2004C4无停顿GC、TB级堆内存、低延迟高频交易、实时系统闭源商业版,成本较高
Android ARTGoogle2014AOT编译、增量编译、Profilo工具Android应用专为移动优化,不兼容桌面JVM
Dalvik VMGoogle2008针对移动设备优化,执行.dex文件Android 1.5-4.4性能较低,已被ART取代

四、关键总结
  • HotSpot JVM:Java生态的核心,持续演进(GC算法、编译器优化)。
  • GraalVM:多语言、AOT编译的革新,适合混合架构。
  • OpenJ9:资源效率优先,适合容器化部署。
  • Zing:低延迟领域的标杆,专为极端场景设计。
  • ART:移动领域的标准,替代Dalvik提升性能。
  • 未来趋势
    • 虚拟线程(Java 20):解决线程阻塞问题,提升并发能力。
    • AOT编译(GraalVM/Substrate):优化启动时间和部署体积。
    • 低延迟GC(ZGC/Shenandoah):扩展实时系统适用性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2342693.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【学习笔记】Cadence电子设计全流程(三)Capture CIS 原理图绘制(下)

【学习笔记】Cadence电子设计全流程&#xff08;三&#xff09;Capture CIS 原理图绘制&#xff08;下&#xff09; 3.16 原理图中元件的编辑与更新3.17 原理图元件跳转与查找3.18 原理图常见错误设置于编译检查3.19 低版本原理图文件输出3.20 原理图文件的锁定与解锁3.21 Orca…

OpenCV 图形API(54)颜色空间转换-----将图像从 RGB 色彩空间转换到 HSV色彩空间RGB2HSV()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将图像从 RGB 色彩空间转换为 HSV。该函数将输入图像从 RGB 色彩空间转换到 HSV。R、G 和 B 通道值的常规范围是 0 到 255。 输出图像必须是 8 位…

JavaWeb学习打卡-Day1-分层解耦、Spring IOC、DI

三层架构 Controller&#xff08;控制层&#xff09;&#xff1a;接收前端发送的请求&#xff0c;对请求进行处理&#xff0c;并响应数据。Service&#xff08;业务逻辑层&#xff09;&#xff1a;处理具体的业务逻辑。DAO&#xff08;数据访问层/持久层&#xff09;&#xff…

基于 Electron、Vue3 和 TypeScript 的辅助创作工具全链路开发方案:涵盖画布系统到数据持久化的完整实现

基于 Electron、Vue3 和 TypeScript 的辅助创作工具全链路开发方案&#xff1a;涵盖画布系统到数据持久化的完整实现 引言 在数字内容创作领域&#xff0c;高效的辅助工具是连接创意与实现的关键桥梁。创作者需要一款集可视化画布、节点关系管理、数据持久化于一体的专业工具&…

[Java · 铢积寸累] 数据结构 — 数组类型 - 增 删 改 查

&#x1f31f; 想系统化学习 Java 编程&#xff1f;看看这个&#xff1a;[编程基础] Java 学习手册 在上一章中我们介绍了如何声明与创建数组&#xff0c;还介绍了数组的基本使用方式。本章我们将在上一章的基础上&#xff0c;拓展数组的使用方式&#xff08;可能会涉及一些思…

前端笔记-Axios

Axios学习目标 Axios与API交互1、Axios配置与使用2、请求/响应拦截器3、API设计模式&#xff08;了解RESTful风格即可&#xff09; 学习参考&#xff1a;起步 | Axios中文文档 | Axios中文网 什么是Axios Axios 是一个基于 Promise 的现代化 HTTP 客户端库&#xff0c;专…

C# 类型、存储和变量(值类型引用类型)

本章内容 C#程序是一组类型声明 类型是一种模板 实例化类型 数据成员和函数成员 预定义类型 用户定义类型 栈和堆 值类型和引用类型 变量 静态类型和dynamic关键字 可空类型 值类型引用类型 数据项的类型定义了存储数据需要的内存大小及组成该类型的数据成员。类型还决定了对象…

智慧校园从配电开始:AISD300为校园安全加上智能防护罩

安科瑞刘鸿鹏 摘要 随着校园用电需求不断上升及其安全保障要求的提高&#xff0c;传统低压配电系统已逐渐难以满足现代校园的安全与智能化管理需求。本文基于安科瑞电气推出的AISD300系列三相智能安全配电装置&#xff0c;探讨其在校园电力系统中的应用优势及关键技术特性。…

一 、环境的安装 Anaconda + Pycharm + PaddlePaddle

《从零到一实践&#xff1a;系统性学习生成式 AI(NLP)》 一 、环境的安装 Anaconda Pycharm PaddlePaddle 1. Anaconda 软件安装 Anaconda 软件安装有大量的教程&#xff0c;此处不在说明&#xff0c;安装完成之后界面如下&#xff1a; 2. 创建 Anaconda 虚拟环境 Paddl…

十倍开发效率 - IDEA插件之 Maven Helper

0X00 先看效果 第一个选项表示存在冲突的依赖&#xff0c;可以看到图片中 mysql 的连接依赖发生了冲突&#xff0c;在低版本的上面直接右键选择 Exclude&#xff0c;冲突的依赖就被解决掉了。 0X01 安装 在 Plugins 中直接搜索 Maven Helper&#xff0c;选择第一个进行安装&am…

人机共跑,马拉松人型机器人同跑

马拉松比赛对人形机器人来说&#xff0c;是一场对硬件极限的测试&#xff0c;涉及机械、传感器、能源管理等多个方面。用户问的是硬件方面的考察和改进&#xff0c;这意味着我的回答需要聚焦于硬件性能&#xff0c;而不是算法或软件的优化。 对人形机器人硬件的考研 机械结构与…

策略模式:动态切换算法的设计智慧

策略模式&#xff1a;动态切换算法的设计智慧 一、模式核心&#xff1a;定义一系列算法并可相互替换 在软件开发中&#xff0c;常常会遇到需要根据不同情况选择不同算法的场景。例如&#xff0c;在电商系统中&#xff0c;根据不同的促销活动&#xff08;如满减、折扣、赠品&a…

uniapp微信小程序:WIFI设备配网之TCP/UDP开发AP配网

一、AP配网技术原理 1.1 配网模式选择 AP配网&#xff08;SoftAP模式&#xff09;是IoT设备配网成功率最高的方案之一 1、其核心原理&#xff1a; ​​设备端​​&#xff1a;启动AP模式&#xff08;如SSID格式YC3000_XXXX&#xff0c;默认IP192.168.4.1&#xff09;​​手…

离线-DataX

基本介绍 DataX 是阿里云 DataWorks数据集成的开源版本&#xff0c;在阿里巴巴集团内被广泛使用的离线数据同步工具/平台&#xff0c;它是一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源…

第5课:对象与类——JS的“信息收纳盒”

生活从不会亏待每一个努力向上的人&#xff0c;愿你带着满腔热忱&#xff0c;无畏前行&#xff0c;用汗水书写青春的华章&#xff0c;用拼搏铸就人生的辉煌&#xff0c;今日的每一份付出&#xff0c;都将是未来成功的基石&#xff01; 欢迎来到「JavaScript 魔法学院」第 5 课…

xshell 登录验证失败解决

产生原因&#xff1a;检查防火墙、selinux 、网络模式、对外是否能ping外网 systemctl status firewalld cat /etc/selinux/config #disabled ping 223.5.5.5 ping 8.8.8.8 ping www.baidu.com 一、检查网络连接 确认虚拟机是否在线&#xff1a; 首先&#xff0c;确保虚…

AI 赋能 3D 创作!Tripo3D 全功能深度解析与实操教程

大家好&#xff0c;欢迎来到本期科技工具分享&#xff01; 今天要给大家带来一款革命性的 AI 3D 模型生成平台 ——Tripo3D。 无论你是游戏开发者、设计师&#xff0c;还是 3D 建模爱好者&#xff0c;只要想降低创作门槛、提升效率&#xff0c;这款工具都值得深入了解。 接下…

AI书籍大模型微调-基于亮数据获取垂直数据集

大模型的开源&#xff0c;使得每位小伙伴都能获得AI的加持&#xff0c;包括你可以通过AIGC完成工作总结&#xff0c;图片生成等。这种加持是通用性的&#xff0c;并不会对个人的工作带来定制的影响&#xff0c;因此各个行业都出现了垂直领域大模型。 垂直大模型是如何训练出来…

Kafka命令行的使用/Spark-Streaming核心编程(二)

Kafka命令行的使用 创建topic kafka-topics.sh --create --zookeeper node01:2181,node02:2181,node03:2181 --topic test1 --partitions 3 --replication-factor 3 分区数量&#xff0c;副本数量&#xff0c;都是必须的。 数据的形式&#xff1a; 主题名称-分区编号。 在…

2020-06-23 暑期学习日更计划(机器学习入门之路(资源汇总)+概率论)

机器学习入门 前言 说实话&#xff0c;机器学习想学好真心不易&#xff0c;很多时候都感觉自己学得云里雾里。以前一段时间自己为了完成毕业设计&#xff0c;在机器学习的理论部分并没有深究&#xff0c;仅仅通过TensorFlow框架力求快速实现模型。现在来看&#xff0c;很多时候…