Java虚拟机的历程(jvm01)

ops/2024/11/1 23:48:51/

Java虚拟机的历程(jvm01)

Java虚拟机(JVM)作为Java语言的核心技术之一,自诞生以来经历了多次迭代与演变。不同的虚拟机在性能、功能以及适用场景上各有侧重。本文将介绍Java虚拟机发展历程中的一些重要虚拟机,涵盖经典虚拟机(Classic VM、Exact VM)、影响力最大的虚拟机(HotSpot、JRockit、J9)、移动端虚拟机(KVM)、性能最高的虚拟机(Azul、Liquid VM)、以及其他一些特色虚拟机(Apache Harmony、Microsoft VM、TaoBao VM、Dalvik VM、Graal VM)。

1. 经典虚拟机:Classic VM 和 Exact VM

1.1 Classic VM

Classic VM 是早期Java虚拟机的代表之一,由Sun Microsystems开发。它是最早的JVM实现,提供了Java的基础执行环境。然而,由于Classic VM缺乏现代JVM的很多优化技术(如即时编译和内存管理优化),它逐渐被更先进的虚拟机所取代。

1.2 Exact VM

Exact VM 是Classic VM的改进版本,它引入了更精细的垃圾收集机制和内存管理策略。Exact VM的设计目的是实现“精确的”垃圾收集,即虚拟机能够精确地知道内存中对象的类型和引用关系,从而提高垃圾收集的效率。这种机制为后续的虚拟机(如HotSpot)的发展奠定了基础。

2. 影响力最大的三个虚拟机:HotSpot、JRockit、J9

2.1 HotSpot

HotSpot 是目前使用最广泛的Java虚拟机,由Sun Microsystems开发,现在由Oracle维护。它以其强大的性能优化技术而闻名,尤其是即时编译器(JIT Compiler)和垃圾收集器(GC)的多种策略,如G1、CMS和ZGC。HotSpot的设计目标是为各种应用场景(从服务器到桌面应用)提供高效、稳定的执行环境。

2.2 JRockit

JRockit 是Oracle从BEA Systems收购的一款JVM,它在低延迟和高性能方面表现突出。JRockit专注于服务器环境,并且其JIT编译和垃圾收集技术在多线程环境中表现优异。然而,在Oracle收购BEA并将JRockit的技术与HotSpot合并后,JRockit作为一个独立的虚拟机逐渐被HotSpot取代。

2.3 J9

J9 由IBM开发,现在被称为OpenJ9。J9是一款企业级JVM,特别适合在大型企业应用和多线程环境下使用。J9具有模块化和可扩展的架构,支持多种平台,并且在内存管理和性能调优上有独到之处。OpenJ9在开源后,成为Java社区中一个重要的虚拟机选择,与HotSpot形成了良性竞争。

3. 移动端虚拟机:KVM(CDC/CLDC)

KVM(Kilobyte Virtual Machine)是专门为嵌入式和移动设备设计的轻量级Java虚拟机。它有两个版本:CDC(Connected Device Configuration)和CLDC(Connected Limited Device Configuration),分别用于资源较丰富的嵌入式设备和资源极其有限的移动设备。KVM的设计目标是占用尽可能少的资源,从而使Java能够运行在低功耗设备上。

4. 性能最高的两个虚拟机:Azul 和 Liquid VM

4.1 Azul VM

Azul VM 是由Azul Systems公司开发的,旨在为大型服务器和高性能计算提供极致的性能表现。Azul VM通过专用硬件和高度优化的垃圾收集机制(如暂停时间极短的C4垃圾收集器),实现了超低延迟和高吞吐量。它常用于金融行业、实时交易系统等需要高可靠性和低延迟的场景。

4.2 Liquid VM

Liquid VM 由BEA Systems开发,它的设计目标是将JVM直接运行在虚拟化环境中,而不依赖于操作系统。Liquid VM特别适合云计算和虚拟化平台,在这些环境下它能够显著提高性能和资源利用率。Liquid VM后来被Oracle收购并整合到其产品中。

5. 其他虚拟机

5.1 Apache Harmony

Apache Harmony 是一个开源的Java SE实现项目,旨在为Java社区提供一个完全开源的替代品。虽然它最终未能获得广泛的使用,但Harmony的部分代码和设计理念后来影响了其他JVM实现(如Android的Dalvik VM)。

5.2 Microsoft VM

Microsoft VM 是微软早期针对Java开发的虚拟机版本,曾被用于Windows平台。然而,由于与Sun Microsystems的法律纠纷,Microsoft VM被迫停止开发。之后,微软专注于其自己的平台技术,如.NET和C#。

5.3 TaoBao VM

TaoBao VM 是阿里巴巴团队为优化其电商平台而开发的定制JVM。它基于HotSpot,并对垃圾收集器和JIT编译器进行了特别的优化,以提高在电商交易高峰期的性能和稳定性。这种定制JVM显示了如何根据特定应用场景对Java虚拟机进行深度优化。

5.4 Dalvik VM

Dalvik VM 是Android平台上最早使用的Java虚拟机。与传统JVM不同,Dalvik采用寄存器而非栈为基础的架构,这使其在移动设备上有更好的性能表现。随着Android的发展,Dalvik VM被ART(Android Runtime)替代,但它仍然是Android系统早期架构的核心部分。

5.5 Graal VM

Graal VM 是Oracle推出的新一代多语言虚拟机,旨在支持Java、JavaScript、Ruby、Python等多种语言的运行。Graal VM的一个显著特点是其多语言互操作性和高效的即时编译技术。此外,Graal VM还支持原生镜像生成(native image),使得Java应用可以编译为独立的本地可执行文件,极大地提高了启动速度和性能。

结论

Java虚拟机在不断发展和优化中,不同的虚拟机在各自的领域中发挥了重要作用。从早期的Classic VM到现代的Graal VM,Java生态系统经历了技术的革新和优化。根据不同的应用场景和需求,选择合适的Java虚拟机版本,可以充分发挥Java语言的优势。


http://www.ppmy.cn/ops/130265.html

相关文章

PostgreSQL的奥秘:表结构、TOAST与大对象

PostgreSQL(以下简称PSQL)因其灵活性和强大的功能深受欢迎。本文将详细介绍PSQL的内部结构,特别是页面缓冲机制,包括表结构、TOAST技术、大对象(BLOB/CLOB),以及页面缓冲表的工作原理。同时&…

【Leecode】Leecode刷题之路第37天之解数独

题目出处 37-解数独-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 37-解数独-官方解法 方法1:回溯 思路: 代码示例:(Java) p…

达梦数据迁移工具DTS使用实践

1、环境描述 2、DTS概述 1.支持视图、存储过程/函数、包、类、同义词、触发器等对象迁移; 2.支持数据类型的自动映射,编码转换; 3.支持根据条件自定义迁移部分数据; 4.向导式迁移步骤,上手简单; 5.支持 we…

大数据新视界 -- 大数据大厂都在用的数据目录管理秘籍大揭秘,附海量代码和案例

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

乐鑫ESP32-S3无线AI语音方案,教育机器人交互应用,启明云端乐鑫代理商

随着科技的飞速发展,尤其是人工智能和物联网技术的不断进步,教育方式和学习工具正在被重新定义。 教育机器人以其独特的互动性和智能化特点,为学生提供了一个全新的学习平台。这些机器人能够通过语音识别、图像处理和自然语言处理等技术&…

什么是AI神经网络?

文章目录 神经网络的基本概念如何工作?训练过程应用实例未来展望推荐阅读文章 在当今的科技时代,人工智能(AI)已经深入到我们生活的各个方面,而神经网络则是推动这一发展的重要技术之一。无论是在图像识别、自然语言处…

git入门教程6:git基本版本控制

一、初始化和配置Git仓库 安装Git: 首先,从Git的官方网站(git-scm.com)下载并安装Git。安装过程中按照提示操作即可。 初始化仓库: 打开终端或Git Bash,导航到你想要进行版本控制的项目目录。输入git init…

基于无框力矩电机抱闸实现人形机器人在展会中不依赖悬吊

目录: 1 人形机器人在展会中的悬吊状态 2 人形机器人不能长时间站立的原因 3 基于电机抱闸使人形机器长时间站立 4 人形机器人在实用场景中必须长时间站立、快速进行 “静-动” 互换 5 人形机器人在实用场景中实现 “静-动” 快速互换的抱闸控制思路 6 无框力…