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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 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 也在朝着更高效、更智能、更适应新兴技术的方向发展。

目录
相关文章
|
开发工具 数据安全/隐私保护 git
如何从Gitee中拉取项目到HBuilder中?
如何从Gitee中拉取项目到HBuilder中?
|
11月前
|
算法
基于EO平衡优化器算法的目标函数最优值求解matlab仿真
本程序基于进化优化(EO)中的平衡优化器算法,在MATLAB2022A上实现九个测试函数的最优值求解及优化收敛曲线仿真。平衡优化器通过模拟生态系统平衡机制,动态调整搜索参数,确保种群多样性与收敛性的平衡,高效搜索全局或近全局最优解。程序核心为平衡优化算法,结合粒子群优化思想,引入动态调整策略,促进快速探索与有效利用解空间。
|
人工智能 自然语言处理 JavaScript
体验通义灵码 @workspace:轻松分析项目结构,结合代码仓库理解工程、查询问答等
当你需要快速了解一个工程、查找工程内的实现逻辑,或有新的诉求需要进行代码变更时,可以在智能问答窗口中通过 @ 可唤起 @workspace,选中后输入你的问题或诉求,通义灵码可快速结合当前仓库进行工程理解、代码查询、代码问答等,同时可以通过自然语言描述需求,结合当前工程生成简单需求或缺陷的整体修改建议和相关建议代码。
|
网络安全
openstack云平台创建卷以及使用卷挂载
在阿里云上,创建一个名为test-lv的10GB卷,并与实例关联。通过SSH登录,检查磁盘,进行分区和格式化,挂载到/mnt并写入test文件。当卷空间不足时,先分离卷,然后扩展至15GB。重新连接实例,发现原有数据丢失,需重新分区和格式化。重启云主机后,新扩容的5GB显示为/vdb2。
433 1
openstack云平台创建卷以及使用卷挂载
|
数据采集 监控 数据安全/隐私保护
ERP系统中的人力资源管理与员工绩效评估解析
【7月更文挑战第25天】 ERP系统中的人力资源管理与员工绩效评估解析
719 1
|
安全 Java Go
【Golang入门】简介与基本语法学习
Golang语言入门教程,介绍了Go语言的简介、基本语法、程序结构、变量和常量、控制结构、函数、并发编程、接口和类型、导入包、作用域以及错误处理等关键概念,为初学者提供了一个全面的学习起点。
393 0
|
开发工具 Android开发 iOS开发
搭建Flutter开发环境、从零基础到精通
搭建Flutter开发环境、从零基础到精通
|
安全 数据安全/隐私保护
基于RBAC实现权限系统
基于RBAC实现权限系统
774 0
|
缓存 架构师 应用服务中间件
今天跟大家聊一聊软件架构(图文并茂)
今天跟大家聊一聊软件架构(图文并茂)
658 1
|
数据采集 BI 数据库
MyEMS的安装部署与数据读取查看
MyEMS开源能源管理系统用于建筑、工厂、商场、医院、园区的电、水、气等能源数据采集、分析、报表,还有光伏、储能、充电桩、微电网、设备控制、故障诊断、工单管理、人工智能优化等可选功能。资深专业团队开发维护,保障长期支持。用开源助力实现碳达峰碳中和目标!