Java知识理解:为什么安装JDK,JDK、JRE、JVM三者关系及相关理解

版权声明:本文为博主原创文章,未经博主允许不得转载,转载请注明出处。 https://blog.csdn.net/m0_37482190/article/details/86505152

大家都知道电脑的操作系统是由汇编和C语言写出,因此操作系统无法直接识别其他语言。这时我们需要添加编译环境,将其他语言编译为操作系统能够识别的语言。

当我们在电脑编译Java语言时就需要安装JDK。

java源程序—>JDK把java翻译成.class—>jre运行.class文件解释为中间代码—>送给操作系统(C语言识别、汇编语言识别)—>转变为二进制

下面是根据我的理解制作的流程图:

在这里插入图片描述
JDK是 Java 语言的软件开发工具包(SDK)。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。

一、什么是JDK

通俗来说:JDK 是整个JAVA的核心,包括了Java运行环境,一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。

JDK是java开发工具包,基本上每个学java的人都会先在机器上装一个JDK,JDK目录下面有 六个文件夹:一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的 是以下四个文件夹:bin、include、lib、 jre。其中JDK包含JRE,而JRE包 含JVM。
bin:最主要的是编译器(javac.exe)
include:java和JVM交互用的头文件
lib:第三方类库的存放
jre:java运行环境

总的来说JDK是用于java程序的开发,而jre则是只能运行 .class 而没有编译的功能。
在这里插入图片描述

二、什么是JRE

通俗来说:JRE是指java运行环境,包含JVM及Java核心类库。 我们编写的Java程序必须要借助JRE才能运行,光有JVM还不能完成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。(jre里有运行.class的java.exe)

在这里插入图片描述

三、什么是JVM

JVM(Java Virtual Machine),即java虚拟机,为 java运行时的环境制定规则,是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。针对java用户,也就是拥有可运行的.class文件包(jar或者war)的用户。里面主要包含了jvm和java运行时基本类库(rt.jar)。rt.jar可以简单粗暴地理解为:它就是java源码编译成的jar包。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。

四、JDK、JRE、JVM三者的联系与区别
1.三者联系:
JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。JVM+Lib=JRE。
总体来说就是,我们利用JDK开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

JDK把java翻译成.class—>jre运行.class—>送给操作系统识别—>C语言识别—>汇编语言识别—>转变为二进制

2.三者区别:

(1)JDK和JRE区别: 在bin文件夹下会发现,JDK有javac.exe而JRE里面没有,javac指令是用来将java文件编译成class文件的,这是开发者需要的,而用户(只需要运行的人)是不需要的。JDK还有jar.exe, javadoc.exe等用于开发的可执行指令文件。这也证实了一个是开发环境,一个是运行环境。

(2)JRE和JVM区别: JVM并不代表就可以执行class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar。

(3)JVM和JRE区别: JVM定义执行规则,JRE按照规则执行。

五、相关理解

不使用eclipse编辑器也可以通过记事本写java并成功运行,只要有对应的运行环境即可,只是eclipse为我们提供了便捷。

脚本语言:vb(window系统自带识别环境)、shell(Linux系统自带识别环境)
js(自带浏览器识别)
脚本语言操作系统本身并不识别,只是操作系统提前配置了识别环境,我们只需要通过记事本编辑,完成后更改后缀名就可以运行。

本文参考的CSDN文章出处

猜你喜欢

转载自blog.csdn.net/m0_37482190/article/details/86505152