JDK、JRE和JVM三者之间关系

article/2025/10/31 7:43:28
JDK、JRE和JVM三者之间关系


很多程序员已经写了很长一段时间java了,依然不明白JDK,JRE,JVM的区别。今天个人总结一下它们三者的关系、区别。
JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。
Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
JVM是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。
 
 
下面分别详细介绍
 
JDK


JDK是java开发工具包,在其安装目录下面有六个文件夹、一些描述文件、一个src压缩文件。bin、include、lib、 jre这四个文件夹起作用,demo、sample是一些例子。可以看出来JDK包含JRE,而JRE包含JVM。
bin:最主要的是编译器(javac.exe)
include:java和JVM交互用的头文件
lib:类库
jre:java运行环境(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的)
总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。 
JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。 其中的开发工具包括编译工具(javac.exe)打包工具(jar.exe)等


JRE


JRE是指java运行环境。光有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。所以,在你写完java程序编译成.class之后,你可以把这个.class文件和jre一起打包发给朋友,这样你的朋友就可以运行你写程序了。 
包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等, 
如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。 


 JVM


JVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。 
可以理解为是一个虚拟出来的计算机,具备着计算机的基本运算方式,它主要负责将java程序生成的字节码文件解释成具体系统平台上的机器指令。让具体平台如window运行这些Java程序。 


简单而言:使用JDK开发完成的java程序,交给JRE去运行。 


三者之间关系 
JDK 包含JRE,JRE包含JVM。


JVM:将字节码文件转成具体系统平台的机器指令。 
JRE:JVM+Java语言的核心类库。 
JDK:JRE+Java的开发工具。 




我们开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

http://chatgpt.dhexx.cn/article/5gU5v8Kx.shtml

相关文章

JDK与JRE的安装与配置

这两天为了这个JAVA的编译环境JDK和JRE的配置可花了不少心思,曾还一度把电脑的注册表给误删了,导致电脑重装了系统,这是血的教训。我买了一本学习JAVA的书,看了里面的视频终于把编译环境给配置好了,其实非常简单。 开始…

jdk与jre

jdk与jre jdk1.8目录jdk1.8下的bin目录jdk1.8下的jre目录jdk1.8下的lib目录 jdk1.8目录 安装好的JDK路径下目录如下:有bin、db、include、jre、lib、COPYRIGHT、javafx-src.zip、LICENSE、README.html、release、src.zip、THIRDPARTYLICENSEREADME.txt、THIRDPARTY…

【jdk和jre】

JRE和JDK JRE (Java Runtime Environment)\n是Java程序的运行时环境,包含JVM和运行时所需要的核心类库。 我们想要运行一个已有的Java程序, 那么只需安装JRE即可。 JDK (Java Development Kit)\n是Java程序开发工具包,包含JRE和开发人员使用…

jdk没有jre的解决方法

jdk11以上没有jre的解决方法 小白篇 安装的jdk没有jre(JDK11以上版本)解决方法方法一:步骤1:步骤2: 注意:方法二:步骤1:步骤2: 值得注意的是:1.2. 安装的jdk没有jre(JDK11以上版本) 我猜你安装…

jdk、jre、jvm分别是什么?有什么联系?

目录 介绍 JDK和JRE JRE和JVM 介绍 JDK:是Java Development Kit的缩写,是Java的开发工具包,JDK是整个JAVA的核心。它提供了编译、运行Java程序所需的各种工具和资源。有了它,Java开发者就可以编译和运行自己的Java程序。它包含…

JDK、JRE、JVM 之间的关系

总结: 关系:JDK包含JRE JRE包含JVM JDK (Java Development Kit)----Java开发工具包,用于Java程序的开发。 JRE (Java Runtime Environment)----Java运行时环境,只能运行.class文件,不能编译。 JVM (Java Virtual M…

JDK、JRE和JVM之间的关系

作为一个Java开发者,只会用Java,却不知什么是JDK、JRE和JVM是什么,以及他们之间有什么联系。本文总结了JDK,JRE,JVM三者的关系与区别。 JDK、JRE和JVM之间的关系 一、JDK二、JRE三、JVM四、三者的联系五、三者的区别六…

Java基础 — JDK和JRE的区别和环境变量配置

1、JDK和JRE区别 JDK:java 程序开发工具包,包括编译器(javac.exe)、开发工具(javadoc.exe、jar.exe、keytool.exe、jconsole.exe)和更多的类库(如tools.jar)等。JRE:jav…

linux df和du命令

df(disk free)命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。Linux du (英文全拼:disk usage)命令用于显示目录或文件的大小。 加上-h以可读性更强的方式显示文件大小 由此可见,一个是对于…

Linux命令详解之du命令

功能:可以用于查看每个文件的磁盘用量,目录则取总用量 格式:du 【选项】【文件或目录】 主要使用参数: -a 显示所有文件的大小 -h 以人类可读的方式查看…

十进制小数转二进制

十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。以0.875为例,具体做法是: 一、取整运算 1、用2乘十进制小数,可以得到积:2*0.8751.75; 2、将积的整数部分1取出,再用2乘余下…

小数的二进制和十进制之间的转换

0.125(十进制) 依次 2 取小数点左边第一个数,将取得的数按顺序排列在小数点右侧,例子如下: 0.125 2 0.25 0.25 2 0.5 0.5 2 1.0 0.125(十进制)——> 0.001(二进制) 0.001(二进制…

二进制十进制小数转换

方法: 十进制的小数转为二进制,主要是小数部分乘以2,取整数部分一次从左往右放在小数点后,直至小数点后为0(就是为整数时) eg:0.125 二进制的小数转换为十进制主要是乘以2的负次方&#xff0…

二进制小数转换

文章转自: https://www.cnblogs.com/xkfz007/articles/2590472.html 一、二进制数转换成十进制数 由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"…

带小数十进制转二进制--图解

我们常见的是纯整数十进制转二进制,而对小数部分的转换不常提及。以下帮助大家梳理 ( x x x . y y y ) 10 x x x 为 整 数 部 分 , y y y 为 小 数 部 分 (xxx.yyy)_{10}\\ xxx为整数部分,yyy为小数部分 (xxx.yyy)10​xxx为整数部分&#xf…

十进制小数分数与二进制的转换

十进制分数转换为二进制数 使用短除法。 例如将十进制分数11/28转换为二进制数,过程如下: 1、首先将分子分母分别转换成二进制 (11)10(1011)2 (28)10(11100&#xff09…

二进制小数快速转成十进制小数的方法

例:0.0100101二进制转换成十进制为0.2890625。 直接说方法: 将小数部分提取出来为0100101并将其看成二进制整数,转换成十进制就是143237,答案即为37/1280.2890625。128为二进制整数最高位64的两倍。 再如0.101100100101二进制转换…

小数十进制转二进制

整数部分的十进制和二进制转换很容易,下面我们只考虑小数部分的转化: 一、十进制小数转二进制 小数部分十进制小数乘以 2,得出的积,然后把积的整数位取出,再用积的小数部分乘以 2,再把积的整数位取出&…

小数转二进制

小数转二进制 小数转二进制常用的方法有两种: 定点存储法 以0.625为例-----转换二进制为: 浮点存储法 二进制为:01000001 10011101 00000000 00000000 C#里使用浮点存储法,先用定点存储法计算后再进行浮点存储法计算。 由于转…

WARNING: RXTX Version mismatch Jar version = RXTX-2.1-7 native lib Version = RXTX-2.2-20081207 Cl

1.问题描述: WARNING: RXTX Version mismatchJar version RXTX-2.1-7native lib Version RXTX-2.2-20081207 Cloudhopper Build rxtx.cloudhopper.net gnu.io.NoSuchPortExceptionat gnu.io.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:218)…