虚拟机和java虚拟机的区别??
谈到虚拟机大家都不陌生,比如当大家要安装linux操作系统时,都会先下载VM ware 或者Visual Box,然后通过他们来安装操作系统
或者你也可以直接给电脑安装一个双系统;
那java虚拟机又是什么呢?
1.认识一下虚拟机
所谓虚拟机就是一台虚拟的计算机,它是一款软件,用来执行一系列虚拟计算机指令.大体上来说,虚拟机分为系统虚拟机和程序虚拟机
无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中;
2. 虚拟机的分类
-
系统虚拟机
系统虚拟机:是完全对物理计算机的仿真,提供了一个可以运行完整操作系统的软件平台;
比如大名鼎鼎的
VM ware ,Visual Box
就属于系统虚拟机;通过它们我们可以模拟一个计算机:新建虚拟机,然后分配多大内存,分配几个cpu等等……当我们新建好虚拟机并且分配好时,一台虚拟的计算机就已经OK了,此时我们可以给这台虚拟的计算机安装你想要的操作系统;
总结:系统虚拟机是对硬件的仿真模拟!!
-
程序虚拟机
程序虚拟机的典型代表就是java虚拟机(JVM),它专门为执行单个计算机程序而设计,在java虚拟机中执行的指令我们称为java字节码指令.
那什么又是字节码呢??
在java中,JVM可以理解的代码就叫字节码(即扩展名为,class文件),它不面向特定的处理器,只面向虚拟机.java通过字节码的方式,在一定程度上解决了传统解释型语言效率低的问题,同时保留了解释型语言可移植性的特点;
提到字节码,我们不得不提java代码是怎样运行的了!!!
主要经过以下几个步骤
java代码和通过jdk中的开发工具比如(javac)编译后形成java字节码(也就是.class的文件),然后通过jvm编译,解释执行,最终变成机器可以看懂的机器码(也就是01010101);
这也就是为什么我们在写java语言时,要先下载jdk的原因了;
tips:这里涉及到的jvm,jre,jdk,不清楚的小伙伴
可以参考这篇文章哦
注意:jvm的‘原材料’是字节码,不仅仅局限于java字节码,
因为只要我们编译好的字节码文件满足jvm的格式和标准,都可以被执行,
总结:程序虚拟机是用来执行程序的!!
最后看一张图,区分Java虚拟机(JVM)和系统虚拟机
总的来说:系统虚拟机>JVM
注意:
- JVM是运行在操作系统之上的,它与硬件没有直接的交互
- 系统虚拟机是对物理硬件的模拟仿真,
- 也就是你还可以在系统虚拟机上安装JVM