JDK/JRE/JVM概述理解,大牛请指点

No.1JDK/JRE/JVM的概念及其关系

简述一下为什么会先解释这三个东西,其实对于有了java基础的人来说,对这三个东西都非常的熟悉,但是,我们在我们的开发过程中有对其进行操作吗?并没有,偶尔会出现JDK版本的兼容问题(打脑壳、非常打脑壳),但是,当你进入了更高层次的开发,你就会去注重代码是如何进行编译,如何运行,如何成为你想要的东西,所以!简单看看吧,反正也用不上,哈哈哈哈哈。

1.1JDK
我们日常都会在开发过程中看看我们的JDK是哪个版本的啊,害,和我们的谁谁谁jar包会不会不兼容啊啥的。所以JDK到底是啥!
Java Development Kit,这是它的全称,翻译一下也叫做Java程序开发工具+包。说白了,这玩意就是我们开发人员用的,里面有非常多的库函数、工具类巴拉巴拉等等一系列的东西,所以,抽象一点,JDK是一个工具包,里面有你想得到的和你想不到的工具用于建房子(程序)。

1.2JRE
可能在我们最开始的时候,我们听过JDK,也听过JVM,但是JRE好像我们用的不多吧,没听过吧。那么我们来看一下我们JRE的全称:Java Runtime Environment,翻译过来叫做Java运行环境,它的作用是什么呐,如果没有它,我们的Java程序都不能够运行。假设,我现在在一台没有JDK/JRE/JVM的计算机上,我拷贝了一段代码,我说:“win10,你给我运行它”,但是win10却给你说:“你这个我不知道怎么解析它呀,我难搞啊哥”。可以这样讲,我按照JDK的规范做出来的零件,我却找到可以解析这个零件的工具,和翻译一样,Java程序的运行环境
1.3JVM
说到JVM,那就有点意思了,我们先翻译一下:Java Virtual Machine,Java虚拟机!WTF?虚拟机是啥?Java虚拟机又是啥?
我们抽象的来说,它是一个虚拟的计算机,我们所有的Java程序都会在我们的Java虚拟机上进行运行。重点来了,Java说它是个跨平台的语言,霍,牛我也会吹,怎么跨嘛,这就归功于我们的Java虚拟机。当我们安装JVM在计算机系统上(当下计算机系统win、linux、mac),不同的计算机系统都会有其对应的虚拟机版本,所有,我们的一个Java程序,在各种计算机系统上都可以进行运行,当然!一般只有市面上流行的计算机系统才会有对应的虚拟机版本,sun公司也不是闲的没事干,只要是个计算机系统都给你整活。JDK/JRE/JVM概述理解,大牛请指点
小结一下对于这三个东西的抽象理解
1.JDK是我们的开发工具箱
2.JRE是我们的解析工具
3.JVM是我们的运行工具
那他们之间的关系是怎样的呐?
JDK包含了JRE,JRE包含了JVM,即
JDK>JRE>JVM
那么我们梳理一下,我们开发当中使用JDK进行开发,我们回去编译、运行,测试我们的代码,所以,我们需要一个编译环境和运行机器。
而JRE呐,是在我们对项目部署时,我们并不需要我们的开发工具了,我们只需要让计算机拥有编译、解析Java代码并运行的能力,所以,我们会在项目部署时,给我们的服务器安装对应的JRE。
而JVM。emmmmm,JVM说白了就是将我们的解析后的java程序进行运行的一个虚拟的机器,但是,重点就在于它机器时如何运行的,是按照怎样的规则对我们编译后的程序进行运行的。这个玩意比较繁杂,所以明天来解析,哈哈哈哈哈哈哈。
当我们更注重我们的程序质量了时,我们就会想,嗨,老子幸幸苦苦写出来的代码,你咋给我运行了个鸡掰,我们就会去研究,JVM里的构造是怎样的,它的运行规则又是怎样的,我的代码该如何去配合JVM。
当然,这个点,看看就行了,其实sun公司的JVM已经非常的人性化,基本上不会出现你的构想和JVM解析出来的东西不一样,但是!了解一下啦!面试造火箭会问啦。