您当前的位置:首页 > 电脑百科 > 软件技术 > 软件技术

什么是虚拟机?你知道吗?

时间:2024-02-19 11:16:51  来源:微信公众号  作者:Java极客技术
谁都没想到 Sun 公司技术如此的强大,却在之后的岁月里逐渐走向陨落,因为不懂销售和运营,导致公司财务逐渐出现亏损,在 2009 年,Oracle 公司以现金方式收购 Sun 公司,交易价格达 74 亿美元。

一、摘要

众所周知,JAVA 经过多年的发展,已经从一门单纯的计算机编程语言,发展成了一套成熟的软件解决方案。从互联网到企业平台,Java 是目前使用最广泛的编程语言。

以下这段内容是来自 Java 的官方介绍!

从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java 无处不在!

无论是是互联网公司还是传统的企业,在研发数字化平台系统时,世界上绝大部分的公司基本上都会首选采用 Java 来开发,以助力企业的数字化转型和生产效率的提升,原因就不多说了,安全、稳定、高性能、跨平台等等,其实还有一个很大的优势:好招人,哈哈哈~~

而 Java 之所以如此有魅力,不仅限于它优秀的程序语言设计,其中还有一个很重要的原因得益于它的虚拟机平台设计,通过它的虚拟机可以轻松实现应用程序跨平台运行,实现“一次编写,到处运行”的目标,并且还可以取得不错的运行效率。

二、Java 简介

在介绍虚拟机之前,我们还是简单的回顾一下 Java 的发展故事。

Java 最早是由 SUN 公司的一个小工程师团队在上个世纪 90 年代初开发的一种编程语言,其中詹姆斯·高斯林是项目负责人(人称 Java 之父),编程语言最初被命名为 Oak,以他们的办公室外的橡树而命名,后来因为 Oak 已经被人注册了,因此重新改名成 Java。

在此,我们附上一张 Java 之父的光辉图片!

图片图片

当时的目标是将其用于开发数字有线电视行业的嵌入式应用程序,例如机顶盒、智能电视等数字设备,实现无障碍的运行。结果推出以后,市场没啥反响。4 年后,技术小组不得不解散。

但也就在此时,互联网刚刚崛起,恰巧这时 MarkArdreesen 开发的 MosAIc 和.NETscape 启发了 Oak 项目组成员,他们利用 Java 编写了 HotJava 浏览器,HotJava 拥有了在页面中运行 Java 代码的能力,可以无障碍的运行在各个电脑设备上,这个效果得到了 Sun 公司首席执行官 ScottMcNealy 的支持,触发了 Java 进军 Internet 的决心。

这在当时引起了不小的轰动,人们从中似乎看到了互联网未来该有的样子,一时间,Java 受到了众多厂商和开发者的追捧。于是趁热打铁,Sun 在 1996 年正式发布了 JDK1.0,当时最主要的十个操作系统厂商宣布,将在它们的系统中支持 Java 程序的运行,从此在互联网高速发展中大杀四方。

Java 之所以能在互联网发展中获得广泛的开发者支持,一个很重要的原因就是它可以实现“一次编写,到处运行”的效果,极大的省去了软件开发工作量,能实现这种效果主要得益于 Java 的架构理念设计。

像 C、C++ 等编程语言,代码是直接编译成机器码执行,虽然很快,但是不同的平台(x86、ARM等) CPU 的指令集也不同,每次开发一个应用程序需要编译出每一种平台的对应机器码,非常麻烦。

Java 则不同,它会将代码编译成一种“字节码”,它类似于抽象的 CPU 指令,然后虚拟机负责加载字节码,根据不同的平台编译成对应的机器码并执行,这样就可以实现了“一次编写,到处运行”的效果。

图片图片

当然,对于虚拟机,需要针对每个平台分别开发,为了保证不同平台、不同公司开发的虚拟机都能正确执行 Java 字节码,SUN 公司制定了一系列的 Java 虚拟机规范。从实践的角度来看,虚拟机的兼容性做得非常好,低版本的 Java 字节码完全可以正常运行在高版本的虚拟机上。

整个 JDK 内部结构,可以用如下图来概括(图片来自于廖雪峰的Java介绍)

图片图片

JDK、JRE 和 JVM 三者之间的关系,可以用如下内容来简要描述。

  • JDK(Java Development Kit):指的是 Java 语言的软件开发工具包,包括编译器、调试器、Java API 类库、Java 虚拟机等内容,通常用于开发环境
  • JRE(Java Runtime Environment):指的是 Java 运行时环境,包括 Java API 类库、Java 虚拟机等内容,通常用于运行 Java 应用程序,通常用于生产环境
  • JVM(Java Virtual machine):指的是 Java 虚拟机,用于在不同的平台上执行 Java 应用程序

可以清晰的看到,JVM 是 Java 应用程序能实现跨平台运行的核心。因此,了解和学习 JVM 相关的知识,有助于开发者对 Java 相关技术有着更全面的认识。

在操作系统的命令行,输入java -version,即可看到当前 JDK 采用的是哪种版本的虚拟机。

图片图片

三、虚拟机简介

说起 Java 虚拟机,许多开发者可能首先会想到  HotSpot 虚拟机,正如上文的截图部分。

实际上 Java 虚拟机除了 HotSpot 之外,还有 Sun Classic VM、Exact VM、BEA JRockit VM、IBM J9 VM等等,虚拟机的发展过程,可以用百花齐放这四个字来概括。

3.1、Sun Classic VM

在 1996 年,Sun 发布 JDK 1.0 时,其中自带的虚拟机就是 Classic VM。这款虚拟机使用的是纯解释器的方式来执行 Java 代码,简单的说就是边解释边运行代码,并非像现在这样通过编译器的方式来执行代码(先编译、后执行)。在 Sun Classic 虚拟机中,解释器与编译器无法共同存在,因此 Java 应用程序执行速度上肯定快不起来,只能说够用。

在 1998 年,Sun 在发布 JDK 1.2 时,同时也公布了一款名为 Exact VM 的虚拟机,这款虚拟机尝试解决了 Classic VM 遇到的所有问题。它的执行系统解决了 Classic VM 存在的解释器和编译器无法同时工作的问题,同时还具备了一些现代高性能处理器的特性,如:两级即时编译、准确式内存管理等。

但可惜的是,这款虚拟机一直没有真正被大规模使用过,此时 Sun Classic VM 依然作为默认的 Java 虚拟机。

3.2、HotSpot VM

在 2000 年,Sun 在发布 JDK 1.3 时,公布将 HotSpot VM 作为默认的 Java 虚拟机,也就是大家广为流传的 Java 虚拟机。

实际上,这个虚拟机并不是由 Sun 公司原生开发的,而是由一个叫 Longview Technologies 公司开发的,Sun 公司注意到了这款虚拟机在 JIT 编译上的许多优秀成果,于 1997 年收购了 Longview Technologies 公司,从而获得了 HotSpot VM 的所有权。

HotSpot VM 不仅仅有前面说到两款虚拟机的优点,也有许多自己的新技术,例如:热点探测技术。热点探测技术指的是通过执行计数器找出最具优化价值的代码,然后通知 JIT 编译器以方法为单位进行深度优化编译。

其实 Exact VM 中也有类似的技术,但最终还是选择了 HotSpot 作为默认的虚拟机。

HotSpot VM 作为默认的 Java 虚拟机之后,直到现在,依然是我们最常用的虚拟机,可见 HotSpot VM 的生命力之顽强!

3.3、BEA JRockit  / IBM J9 VM

前面说的是 Sun 公司研发的虚拟机,但除了 Sun 公司之外,其他组织、公司也研发过不少的虚拟机实现,其中最著名的就是 BEA 公司的 JRockit VM 和 IBM 公司的 J9 VM 了。

JRockit VM 是除 HotSpot 之外另一款响当当的虚拟机,BEA 公司在 2002 年收购的了此虚拟机的开发商。这款虚拟机在相当一段时间里获称世界上速度最快的 Java 虚拟机,它是一款专注于服务器端应用的虚拟机,并且它的垃圾收集算法相比其它所有虚拟机表现更佳;此外,其提供的 MissionControl 服务套件也十分强大。

IBM 公司的 J9 VM 则是一款比较通用的虚拟机,其定位应用于从服务端到桌面应用,再到嵌入式的多用途虚拟机。IBM 公司开发 J9 VM 的目的是将其作为 IBM 公司各种 Java 产品的执行平台。稍有不同的是,IBM J9 VM 都只能跟 IBM 产品一起使用,虽然不存在技术限制,但是需要单独的商业许可证。

J9 VM 的性能水平大致跟 HotSpot VM 是一个档次的,在一些场景下,有时 HotSpot VM 快些,有时 J9 VM 快些。

3.4、其它 JVM

HotSpot、JRockit 和 J9 这三个虚拟机,曾经在很长的时间并称三大主流 JVM,可以说是 Java 虚拟机发展史上比较耀眼的部分。除此之外,其实还有各种各样的小范围使用的虚拟机。

例如 Azul VM 和 BEA Liquid VM 的专用商业虚拟机,性能非常强悍,可以管理至少数十个 CPU 和数百 GB 的内存资源,还提供在巨大内存范围内实现可控 GC 时间的垃圾收集器等等,这些虚拟机只运行在特定硬件平台,因此要求也比较高。

此外还有许许多多其他的虚拟机存在,例如:Apache Harmony、google Android Dalvik VM、Mircosoft JVM 等等,都在各自领域发挥作用。

3.5、Oralce

谁都没想到 Sun 公司技术如此的强大,却在之后的岁月里逐渐走向陨落,因为不懂销售和运营,导致公司财务逐渐出现亏损,在 2009 年,Oracle 公司以现金方式收购 Sun 公司,交易价格达 74 亿美元。

此前,Oracle 公司在 2008 年收购了 BEA 公司,获得了 JRocket VM 的所有权;这意味着 JRockit 与 HotSpot 同属于 Oracle 所有。

实际上,现在 JDK1.8 的 HotSpot VM 已经是以前的 HotSpot VM 与 JRockit VM 的合并版,也就是传说中的“HotRockit”,只是产品里名字还是叫 HotSpot VM。

后续的 JVM 发展,相信会越来越好,我们拭目以待!

四、小结

本文主要围绕 Java 的发展历史,对虚拟机的诞生历史做了一次知识总结,在后续的文章中,我们会对 JVM 相关知识进行总结和分享,如果有描述不对的地方,欢迎大家留言指出,不胜感激!

五、参考

1.https://www.liaoxuefeng.com/wiki/1252599548343744/1255876875896416

2.https://www.cnblogs.com/xrq730/p/4826691.html

3.https://www.cnblogs.com/chanshuyi/p/jvm_serial_02_the_history_of_jvm.html



Tags:虚拟机   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Docker 和传统虚拟机有什么区别?
我有一个程序员朋友,他每年情人节都要送女朋友一台服务器。他说:“谁不想在过节当天收到一台 4核8g 的服务器呢?”“万一对方不要,我还能留着自己用。” 给他一次过节的机会,他能...【详细内容】
2024-03-26  Search: 虚拟机  点击:(11)  评论:(0)  加入收藏
什么是虚拟机?你知道吗?
谁都没想到 Sun 公司技术如此的强大,却在之后的岁月里逐渐走向陨落,因为不懂销售和运营,导致公司财务逐渐出现亏损,在 2009 年,Oracle 公司以现金方式收购 Sun 公司,交易价格达 74...【详细内容】
2024-02-19  Search: 虚拟机  点击:(43)  评论:(0)  加入收藏
理解Java虚拟机(JVM):优化代码执行效率的内部机制
Java虚拟机(Java Virtual Machine,JVM)是Java程序运行的核心组件,它负责将Java源代码编译成字节码并执行。JVM具有内部机制来优化代码的执行效率,包括即时编译(Just-In-Time Compi...【详细内容】
2023-12-14  Search: 虚拟机  点击:(219)  评论:(0)  加入收藏
Kubernetes:裸机vs虚拟机性能对比
本文对Kubernetes集群在虚拟机和裸机上在CPU、内存、存储和网络性能方面的表现进行了详细的比较和分析。译自Does Kubernetes Really Perform Better on Bare Metal vs. VMs...【详细内容】
2023-11-27  Search: 虚拟机  点击:(219)  评论:(0)  加入收藏
在虚拟机上再运行虚拟机,真是太强了
QEMU(Quick Emulator)是一个开源的模拟器和虚拟化工具,支持多种架构和硬件平台。它可以模拟整个计算机系统,包括处理器、内存、存储设备和各种外设QEMU最初是一个模拟器,可以模拟...【详细内容】
2023-11-17  Search: 虚拟机  点击:(245)  评论:(0)  加入收藏
容器与虚拟机的优劣势分析
容器和虚拟机是现代云计算中常用的两种技术,它们在实现资源隔离和应用部署方面有着不同的方式和特点。本文将对容器和虚拟机的区别进行详细探讨,以帮助读者更好地理解它们的应...【详细内容】
2023-11-11  Search: 虚拟机  点击:(226)  评论:(0)  加入收藏
怎么查看使用的Linux是虚拟机还是物理机
平时工作中使用Linux大部分是通过ssh远程连接到服务器上,比如应用安装部署和系统维护等。那么,对于没有进过机房的人,如何知道自己使用的Linux服务器是虚拟机还是物理机呢?1.dmi...【详细内容】
2023-08-31  Search: 虚拟机  点击:(321)  评论:(0)  加入收藏
修复华为服务器上崩溃的Proxmox虚拟机
接到福州的网友求助,华为服务器,跳电后Proxmox VE里面所有的虚拟机都起不来了。先远程登录看一下吧,至少PVE的web管理界面还能登录,看到错误提示,有点慌啊,vm-xxx-disk-0都没了,难...【详细内容】
2023-08-25  Search: 虚拟机  点击:(329)  评论:(0)  加入收藏
Java是怎么运行起来的?深入理解Java虚拟机
Java虚拟机(JVM)是一个运行时环境,可以执行用Java编程语言编写的程序。Java语言是一种高级语言,它通过抽象和封装的机制,让开发者可以专注于业务逻辑和功能实现,而不用关心底层的...【详细内容】
2023-08-22  Search: 虚拟机  点击:(234)  评论:(0)  加入收藏
微软发布 Win11 2308 版本官方虚拟机下载更新,整合 8 月补丁
IT之家 8 月 21 日消息,微软已发布 2023 年 8 月的 Windows 开发环境(WDE)的更新,这是一套免费的基于 Windows 11 的虚拟机,有不同的配置。最新的 2308 版本现在可以从微软官方网...【详细内容】
2023-08-21  Search: 虚拟机  点击:(105)  评论:(0)  加入收藏
▌简易百科推荐
Win10/Win11和 macOS用户反馈:谷歌云服务“捆绑”系统 DNS 设置
IT之家 4 月 6 日消息,谷歌公司承认旗下的 Google One 订阅服务中存在问题,在 Windows 10、Windows 11 以及 macOS 系统上会更改系统 DNS 设置,变更为 8.8.8.8 地址。Google On...【详细内容】
2024-04-08    IT之家  Tags:Win10   点击:(2)  评论:(0)  加入收藏
微软 Edge 浏览器将迎来“内存限制器”功能,用户可自主控制 Edge 内存占用
IT之家 3 月 28 日消息,微软即将为其 Edge 浏览器带来一项实用新功能,据悉该公司正在测试一项内置的内存限制器,这项功能可以让用户限制 Edge 所占用的内存,防止浏览器超出内存...【详细内容】
2024-03-29    IT之家  Tags:Edge   点击:(13)  评论:(0)  加入收藏
一寸照片的大小如何压缩?四个实测效果很好的方法
一寸照片作为生活中常见的尺寸之一,常用于各类证件照与证明文件的制作。然而,受限于其较为狭小的尺寸,上传及打印过程中很容易出现尺寸超限的情况。所以,这个时候就需要对其体积...【详细内容】
2024-03-18  宠物小阿涛    Tags:压缩   点击:(12)  评论:(0)  加入收藏
手机投屏到电脑/电视的方法
方法一:Win10自带的投影功能1、将手机和电脑连接同一个无线网络。2、选择【开始】>【设置】>【系统】>【投影到此电脑】3、将默认的始终关闭的选项更改为所有位置都可用。4、...【详细内容】
2024-03-18    老吴讲I  Tags:投屏   点击:(12)  评论:(0)  加入收藏
微软商店怎么卸载应用 一分钟快速看懂!
微软商店怎么卸载应用 一分钟快速看懂!微软公司(Microsoft Corporation)是一家全球领先的科技企业,总部位于美国华盛顿州的雷德蒙德。成立于1975年,由比尔·盖茨和保罗&mid...【详细内容】
2024-02-27  婷婷说体育    Tags:微软商店   点击:(35)  评论:(0)  加入收藏
微软Edge浏览器新功能:手机上传 配对设备直接传文件
2月21日,微软最新的稳定版本Edge浏览器在Windows 11/10端加入了“手机上传”功能。这一功能允许用户直接从移动设备上上传文件,适用于所有网站,并且没有文件格式限制。要使用这...【详细内容】
2024-02-21    中关村在线  Tags:Edge   点击:(127)  评论:(0)  加入收藏
什么是虚拟机?你知道吗?
谁都没想到 Sun 公司技术如此的强大,却在之后的岁月里逐渐走向陨落,因为不懂销售和运营,导致公司财务逐渐出现亏损,在 2009 年,Oracle 公司以现金方式收购 Sun 公司,交易价格达 74...【详细内容】
2024-02-19  Java极客技术  微信公众号  Tags:虚拟机   点击:(43)  评论:(0)  加入收藏
怎么查看电脑使用记录
查看电脑使用记录是一项常见的操作,可以帮助用户了解自己或其他人在电脑上进行了哪些操作。下面是一个详细的解释,包括查看浏览历史、文件访问记录、应用程序使用记录以及其他...【详细内容】
2024-02-06  编程资料站    Tags:使用记录   点击:(81)  评论:(0)  加入收藏
电脑虚拟内存怎么设置?1分钟快速增加内存!
“我电脑里的内存好像不太够用,因此,我想在电脑里增加一些虚拟内存。不知道我应该怎么操作呢?有什么比较简单的此操作方法吗?” 虚拟内存是计算机系统内存管理的一种技术,它为程...【详细内容】
2024-02-06  数据蛙恢复专家    Tags:虚拟内存   点击:(61)  评论:(0)  加入收藏
新手制作ai写真都是用哪些工具?
春节即将来临,你的朋友圈是否已经被各种春节主题的个人写真刷屏了?看到那么多美照,你是否也心动了?其实,制作个人写真并不需要专门去拍摄,现在有很多AI写真软件可以轻松制作出自己...【详细内容】
2024-01-31  雨后海棠    Tags:ai写真   点击:(60)  评论:(0)  加入收藏
站内最新
站内热门
站内头条