JDK、JRE、JVM分别是什么及它们之间的有什么关联

区块链
• 阅读 2360

JDK

JDK:Java Development Kit 是Java的标准开发工具包(普通用户只需要安装 JRE来运行 Java 程序。而程序开发者必须安装JDK来编译、调试程序)。它提供了编译、运行Java程序所需的各种工具和资源,包括:Java编译器.Java运行环境JRE.常用的Java基础类库.

安装目录的说明

JDK、JRE、JVM分别是什么及它们之间的有什么关联

  • bin文件里面存放了JDK的各种开发工具的可执行文件,主要的是编译器(javac.exe)
  • db文件是一个先进的全事务处理的基于Java技术的数据库(jdk自带数据库db的使用)
  • include文件里面是Java和jvm交互用的头文件
  • jre为java运行环境
  • lib文件存放的是JDK工具命令的实际执行程序

JRE

JRE:Java runtime environment 是运行基于Java语言编写的程序所不可缺少的运行环境,用于解释执行Java的字节码文件。

也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,这些是运行Java程序的必要组件。与大家熟知的JDK不同,JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户。

安装目录的说明

JDK、JRE、JVM分别是什么及它们之间的有什么关联
bin里的就是JVM,lib中则是JVM工作所需要的类库,而JVM和 lib和起来就称为JRE

JVM

Java Virtual Machine 是Java的虚拟机,是JRE的一部分。它是整个java实现跨平台的最核心的部分,负责解释执行字节码文件,是可运行java字节码文件的虚拟计算机。

所有平台的上的JVM向编译器提供相同的接口,而编译器只需要面向虚拟机,生成虚拟机能识别的代码,然后由虚拟机来解释执行。

JAVA跨平台的原因

使用Java编译器编译Java程序时,生成的是与平台无关的字节码,这些字节码只面向JVM。不同平台的JVM都是不同的,但它们都提供了相同的接口。

JVM是Java程序跨平台的最核心的部分,只要为不同平台实现了相应的虚拟机,编译后的Java字节码就可以在该平台上运行。其屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

正是因为有了JVM的存在,Java才实现了强大的跨平台特性。

JVM执行程序的过程

1、加载.class 文件
所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。只有JVM还不能成功执行.class的类文件,因为在解释class的时候JVM需要调用解释所需要的类库lib,而jre包含lib类库。

2、运行class文件

可以在命令行中输入 java 字节码文件名 ,此时启动了一个jvm,加载字节码文件名.class字节码文件到内存,然后jvm运行内存中的字节码指令

在IDE上就类似于点击运行按钮。
3、管理并分配内存
4、执行垃圾收集,调用垃圾收集器进行垃圾回收

三者的区别与联系

JDK用于开发,是给开发人员用的,JRE 用于运行java程序,和JVM是给普通用户使用的。如果只是运行Java程序,可以只安装JRE,无序安装JDK。也就是说:使用JDK开发完成的java程序,交给JRE去运行。

JDK包含了JRE,JDK 和 JRE 中都包含 JVM。也可以说JDK是JRE+Java的开发工具。JRE包含了JVM+Java语言的核心类库。

点赞
收藏
评论区
推荐文章
lucien-ma lucien-ma
4年前
Java里面的十万个为什么
Java里面的十万个为什么1.不是说JVM是运行Java程序的虚拟机吗?那JRE和JVM的关系是怎么样的呢?简单地说,JRE包含JVM。JVM是运行Java程序的核心虚拟机,而运行Java程序不仅需要核心虚拟机,还需要其他的类加载器,字节码校验器以及大量的基础类库。JRE除包含JVM之外,还包含运行Java程序的其
Wesley13 Wesley13
3年前
java基础知识随身记
2018年11月12日20:51:35一、基础知识:1、JVM、JRE和JDK的区别:JVM(JavaVirtualMachine):java虚拟机,用于保证java的跨平台的特性。  java语言是跨平台,jvm不是跨平台的。JRE(JavaRuntimeEnvironment):java的运行环境,包括jvmjava的核心类
Wesley13 Wesley13
3年前
java 面试题目(java高级架构)
题目信息java基础:1\.Java基础1.JDK和JRE有什么区别?  Java中JDK和JRE的区别是什么?它们的作用分别是什么?(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fwilliamjie%2Fp%2
Wesley13 Wesley13
3年前
jdk相关基础知识
了解java运行开发的概念,掌握jdk的安装与环境变量的配置jdk:javadevelopmentkit(javadeveloperkiller)开发工具包jvm:JavaVirtualMachine java虚拟机jre:JavaRuntimeEnvironment,指Java运行环境(包含jvm)查
Wesley13 Wesley13
3年前
JDK的下载与Java运行环境
JDK简介什么是JDKJDK是JavaDevelopmentKit的缩写,意思是Java开发工具包。JDK就好比作人的心脏,人没有了心脏,生命也就失去存在的意义。Java也一样,JDK就是它的心脏,是它的核心。JDK中不仅有Java运行环境(JavaRuntimeEnvironment),还有Java工具与Java的核心类库
Wesley13 Wesley13
3年前
JDK下载安装与环境变量配置【超详细】
!(https://oscimg.oschina.net/oscnet/17a233ea33b327f797b5f94f408167386be.png)01JDK介绍JDK是一种用于构建在Java平台上发布的应用程序的开发环境,即编写Java程序必须使用JDK,它提供了编译和运行Java程序的环境。02版本介绍
Wesley13 Wesley13
3年前
1.0Java基础入门【第一个java程序与注释】
第一个Java程序1.安装JRE,JDK,配置环境变量2.创建编写一个java文件,编译生成字节码文件(.class),最后运行javachelloworld.java注:windows下不区分大小写javahelloworld\_以下代码是在IDEA编辑器中
Wesley13 Wesley13
3年前
208道面试题
这是从网上看到的一套java面试题,答案只是一个大概,另外题目质量参差不齐,斟酌参考(JVM的部分暂时没有答案)一、Java基础1.JDK和JRE有什么区别?答:JDK(JavaDevelopmentKit)是java开发工具包,是针对开发人员提供的一套开发环境,其中包含了jre(程序运
Wesley13 Wesley13
3年前
Java基础知识强化(用于自我巩固)以及审查
1\.Java和JDK的关系JDK(JavaDevelopmentKit)Java开发工具包,它包括:编译器、Java运行环境(JRE,JavaRuntimeEnvironment)、JVM(Java虚拟机)监控和诊断工具等Java则表示一种开发语言。2. Java程序是怎么执行的?
Wesley13 Wesley13
3年前
Java基础知识总结
一:java概述:1,JDK:JavaDevelopmentKit,java的开发和运行环境,java的开发工具和jre。2,JRE:JavaRuntimeEnvironment,java程序的运行环境,java运行的所需的类库JVM(java虚拟机)。3,配置环境变量:让javajdk\\
Wesley13 Wesley13
3年前
JAVA基础day01
知识总结1.Java是一种非常流行的计算机编程语言,其中使用最多的是Java8.2.JDK是开发工具,JRE是运行环境,JVM是核心所在。JDK包含JRE,JRE包含JVM。3.安装JDK的时候,两项建议:a)路径当中不要有中文或者是空格b)要单独取消外部公共JRE的安装4.命令提示符(cmd)a)启动:开始R,输