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

谁都没想到 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 三者之间的关系,可以用如下内容来简要描述 。