J2SE
的课程终于听完了!在总结的时候,发现我们在安装
JDK
的时候选择安装的
JRE
java
的核心机制
Java
虚拟机从功能上看好像是一个东西。如果一样为什么还要有两个名字呢?

既然不同,那他们又有什么样的关系呢?

 

先说一下什么是虚拟机:

那两天我在我机器上安装了一个虚拟机。试着看了看,安装过程就不说了非常简单。(用到了一个软件 VMware Workstation)。重新定义了硬盘大小,和内存大小,然后装上系统就可以使用了!

         我们来看一下虚拟机的定义吧!虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

         java虚拟机也是相同的了!同样有着虚拟出来的硬件设备。经过材料搜索发现java虚拟机还真是这样工作的。

        

         什么是Java虚拟机

Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。

         那为什么要有java虚拟机呢? 之前学习的vbC#语言中好像没有听到过这样的名词!

         这就不得不说一下java语言的特殊性。Java为解释性语言! 只需要编译一次(编译成java虚拟机可以读懂的文件),就可以在不同的运行环境中,通过java虚拟机把编译出来的程序,解释给运行环境,这样就可以运行了。

     实现一次编译,到处运行的特点!

 

【此内容为转载     Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。】

 

         虚拟机大概知道了,那jre又是个什么东东啊?

我们在安装JDK的时候,有一个让我们选择安装JRE的阶段。其实安装JDK的时候已经自动安装了一套JRE,在<JDK安装目录下>\jre 。而我们如果选择了安装后面提示的JRE安装,又会有一套JRE安装在你的机器上,默认路径为:C:\Program   Files\Java(路径可以自定义)。

 

关于这两套JRE的区别就不多说了,网上有好多的答案。我们现在来说说JREJVM的具体的区别。(个人意见)

JVMJava Virtual Machine)是java虚拟机,而JREJava Runtime Environment)是java运行环境。

从百度百科上查到JRE包含JVMJVM是个虚拟机,虚拟出来的计算机——一个适合java程序运行的计算机。用来运行java编译出来的class文件的和实际操作系统平台没有关系。在百度百科上这样一段话:“JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。……”正如我上面所描述。

 

JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。编译虚拟机的指令集与编译微处理器的指令集非常类似。”这也是摘自百度百科上的原话,看起来好像和上面有写矛盾,上面已经说了JVM屏蔽了具体的操作系统平台,那怎么他还和操作系统又关系呢?

个人认为,像具体平台解释字节吗的并不是虚拟机本身而是,JRE中除了JVM的其他部分。如下图所示:

通过JRE的其余部分检测具体平台(是多少位机,是什么操作系统等等)。之后将JVM运行的java程序解释成具体平台可以读懂的语言执行。

    大体上jrejvm的关系说明白了,不过只是个人猜测。请多指教!