Java 虚拟机的发展历程是怎样的?

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: Java虚拟机(JVM)始于1991年Sun公司的“Green”项目,目标是创建一种跨平台的小型可靠语言。1995年,Java 1.0发布,JVM随之推出,支持面向对象编程。1998年的Java 1.2优化了内存管理和垃圾回收。1999年,HotSpot技术引入,提升了运行速度。2004至2014年间,Java 5-8进一步增强性能,支持Lambda表达式。2006年起,JVM开源并得到多家厂商的支持和优化。近年来,JVM不断适应云计算和容器化环境,发展更加高效智能。

早期起源(1990 年代初)
Java 虚拟机(JVM)的概念诞生于 Java 语言的早期开发阶段。1991 年,Sun Microsystems 公司开始了一个名为 “Green” 的项目,旨在开发一种能够在各种消费电子产品上运行的编程语言,这就是 Java 的前身。当时的目标是创建一种小型、可靠且与平台无关的语言,而 JVM 则是实现这种平台无关性的核心机制。
最初的 JVM 设计相对简单,主要专注于解释执行 Java 字节码,以确保 Java 程序能够在不同的硬件和操作系统环境下运行。
Java 1.0 - 1.2 时代(1995 - 1998 年)
1995 年,Java 1.0 发布,JVM 也随之正式亮相。这个时期的 JVM 在功能上不断完善,开始支持更多的 Java 语言特性,如面向对象编程的各种概念(类、对象、继承、多态等)。
在 Java 1.2(1998 年发布)中,JVM 的性能有了一定提升,并且在内存管理方面进行了优化。例如,对垃圾回收算法进行了改进,提高了内存回收的效率,使得 Java 程序在运行时能够更有效地利用内存资源。
HotSpot 技术的引入(1999 年)
1999 年,Sun Microsystems 公司推出了 HotSpot 技术并集成到 JVM 中。HotSpot JVM 采用了一种混合模式运行 Java 程序,它结合了字节码解释执行和即时编译(JIT)两种方式。
当程序启动时,HotSpot JVM 先以解释方式运行字节码,随着程序的运行,它会监控哪些代码片段被频繁执行,然后将这些频繁执行的字节码使用 JIT 编译成本地机器码。这种方式大大提高了 Java 程序的运行速度,使得 Java 在企业级应用和性能要求较高的场景中更具竞争力。
Java 5 - Java 8 时代(2004 - 2014 年)
在 Java 5(2004 年发布)中,JVM 的性能和功能得到了进一步的提升。例如,对垃圾回收算法进行了更多的改进,引入了诸如并发标记 - 清除(CMS)垃圾回收器等新的垃圾回收机制,以减少垃圾回收过程对程序运行的停顿影响。
Java 6(2006 年发布)继续优化 JVM 的性能,特别是在内存管理和多线程支持方面。
Java 7(2011 年发布)在 JVM 层面增加了一些新的特性,如对动态语言支持的改进等。
Java 8(2014 年发布)是一个重要的版本。JVM 在这个版本中支持了 Lambda 表达式等新的 Java 8 语言特性,并且在性能优化方面持续努力,例如对方法引用等新特性的高效执行进行了优化。
开源与多厂商支持(2006 年起)
2006 年,Sun Microsystems 公司将 Java 开源,这也包括了 JVM 的部分实现。开源使得更多的开发者和组织可以参与到 JVM 的开发和改进中来。
除了 Sun(后来被 Oracle 收购)之外,其他厂商也开始开发自己的 JVM 实现,如 IBM 的 J9 JVM 等。这些不同厂商的 JVM 在遵循 Java 规范的基础上,可能会针对不同的应用场景和需求进行优化,例如 IBM 的 J9 JVM 在企业级大型机环境下有出色的性能表现。
现代发展(2014 年至今)
随着云计算、大数据和容器技术的发展,JVM 也在不断适应新的需求。例如,在容器化环境中,JVM 需要更好地适应容器资源的限制,如内存和 CPU 的限制。
新的垃圾回收算法不断被研究和应用,以提高 Java 程序在不同场景下的性能和资源利用率。同时,JVM 也在朝着更高效、更智能、更适应新兴技术的方向发展。

目录
相关文章
|
Java
JDK1.8源码下载及获取、导入IDEA阅读、配置JDK源码
本文是博主学习JDK源码的记录,希望对大家有所帮助。
2861 0
JDK1.8源码下载及获取、导入IDEA阅读、配置JDK源码
|
开发工具 数据安全/隐私保护 git
如何从Gitee中拉取项目到HBuilder中?
如何从Gitee中拉取项目到HBuilder中?
|
2月前
|
人工智能 API 数据库
从AI检索原理到geo优化:技术驱动的GEO监测策略
随着AI搜索兴起,信息获取从关键词匹配转向语义理解。本文深入解析GEO(生成式引擎优化)技术原理,对比SEO与GEO的核心差异,揭示RAG、向量化检索的底层逻辑,并介绍如何通过真实用户行为模拟实现精准监测,助力企业构建面向AI时代的内容优化体系。
463 0
|
4月前
|
存储 自然语言处理 Java
全球语言无障碍:Unicode标准解读与技术演进史
Unicode是全球字符统一编码标准,旨在为世界上所有文字、符号及emoji分配唯一码点,解决多语言乱码问题。它兼容ASCII,支持超14万字符,覆盖现代与古文字,通过UTF-8、UTF-16等编码方案实现跨平台信息交换,是互联网、操作系统和多语言通信的基础。
953 2
|
6月前
|
人工智能 JSON 供应链
揭秘电商 API 接口,让多平台库存实时更新不是梦
在电商多平台销售中,库存同步是关键难题。本文解析电商 API 接口如何实现库存实时更新,提升效率、减少超卖,保障客户体验与品牌信誉。
380 0
|
7月前
|
存储 分布式计算 算法
Java 大视界 -- Java 大数据在智能教育在线考试监考与作弊检测中的技术创新(193)
本文探讨了Java大数据技术在智能教育在线考试监考与作弊检测中的创新应用。随着在线考试的普及,作弊问题日益突出,传统监考方式难以应对。通过Java大数据技术,可实现考生行为分析、图像识别等多维度监控,提升作弊检测的准确性与效率。结合Hadoop与Spark等技术,系统能实时处理海量数据,构建智能监考体系,保障考试公平性,推动教育评价体系的数字化转型。
|
人工智能 自然语言处理 JavaScript
体验通义灵码 @workspace:轻松分析项目结构,结合代码仓库理解工程、查询问答等
当你需要快速了解一个工程、查找工程内的实现逻辑,或有新的诉求需要进行代码变更时,可以在智能问答窗口中通过 @ 可唤起 @workspace,选中后输入你的问题或诉求,通义灵码可快速结合当前仓库进行工程理解、代码查询、代码问答等,同时可以通过自然语言描述需求,结合当前工程生成简单需求或缺陷的整体修改建议和相关建议代码。
|
开发工具 git
一文教你如何设置git commit模板规范
一文教你如何设置git commit模板规范
|
JavaScript 前端开发
「Vue3系列」Vue3 事件处理
在 Vue 3 中,事件处理与 Vue 2 非常相似,但有一些细微的改进和新的语法。Vue 3 仍然使用 `v-on` 指令来处理 DOM 事件,或者更常见的是使用其简写形式 `@`。
1031 0
|
Java 编译器 关系型数据库
深入理解 Java 中的 final 关键字
final 是 Java 中重要关键字之一,可以应用于类、方法以及变量上。这篇文章中将讲解什么是 final 关键字?将变量、方法和类声明为 final 代表了什么?使用 final 的好处是什么? final 关键字是什么? final 在 Java 中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。
4652 0