JDK-JRE-JVM之间的关系及为什么要配置JDK环境变量

目录

甲骨文官网java下载地址Java Downloads | Oracle

一、JDK(Java Development Kit)

二、JRE(Java Runtime Environment)

三、JVM(Java Virtual Machine)

四、三者的联系

五、总结


甲骨文官网java下载地址Java Downloads | Oracle

一、JDK(Java Development Kit)

JDK(Java Development Kit),即Java开发工具包,是一个编写Java应用程序的开发环境,是java的核心所在。

JDK是整个Java的核心,包括了JRE(Java运行环境),同时在jdk文件夹bin(通常我们配置jdk的环境变量的根目录)目录中包含了一些Java开发工具(例如:jconsole、javac、java、javadoc、native2ascii、jar等)。JDK=JRE+Java开发工具(编译器、反编译器、调试器等)。

jdk1.8目录包含:

bin:一堆exe文件,可执行的开发工具,最主要的是javac, 例如:jconsole、javac、java、javadoc、native2ascii、jar。
jre:java运行环境,包括JVM+Java基础和核心类库 。
lib:本地资源库,包含dt.jar+tools.jar的常用类库,开发依赖包。
include:java和JVM交互用的头文件。

二、JRE(Java Runtime Environment)

JRE(Java Runtime Environment),即Java运行环境,支持Java程序运行的标准环境,包含JVM标准实现及Java核心类库。 JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,这些是运行Java程序的必要组件。通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。JRE=JVM+Java基础和核心类库。

jre1.8目录包含:

bin:有java.exe但没有javac.exe,无法编译Java程序,但可以运行Java程序,可以把这个bin目录理解成JVM。
lib:Java基础和核心类库,如rt.jar,也包含JVM运行时需要的类库。

三、JVM(Java Virtual Machine)

JVM(Java Virtual Machine),即Java虚拟机,运行在操作系统之上,存在于内存中,与内存打交道,与硬件没有直接交互,是Java语言实现跨平台的核心。

JVM是一种抽象,虚拟出来的计算机,和实际的计算机一样,它具有指令集并使用不同的存储区域,它负责执行指令,还要管理数据,内存和寄存器,指令集,寄存器,类文件的格式,栈,垃圾回收堆,存储区等。

Java虚拟机,是JRE的一部分。它是整个java实现跨平台的最核心的部分,负责解释执行字节码文件,是可运行java字节码文件的虚拟计算机。所有平台的上的JVM向编译器提供相同的接口,而编译器只需要面向虚拟机,生成虚拟机能识别的代码,然后由虚拟机来解释执行。
JVM主要负责运行Java编译器编译后的字节码文件(*.class文件)。这些字节码只面向JVM,不同平台的JVM都是不同的,但它们都提供了相同的接口。JVM是Java程序跨平台的关键部分,只要为不同平台实现了相应的虚拟机,编译后的Java字节码就可以在该平台上运行。把字节码解释成具体平台上的机器码执行。JVM自己无法执行,必须要联合JRE中的Java基础&核心类库才能使用。

四、三者的联系

JVM不能单独搞定class的执行,解释class的时候JVM需要调用JRE的类库lib。在JRE目录里有两个文件夹bin和lib,可以认为bin里的就是jvm,lib里的则是jvm工作所需要的类库,而jvm和 lib和起来就称为JRE。

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

五、总结


JDK 是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。

JRE 是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。

JVM 即Java虚拟机,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。

为什么要配置JDK环境变量



因为不配置环境变量的话我们只能去jdk/bin目录下运行java程序,但我们在bin目录下通过启动java.exe,然后再通过javac.exe要把一个java文件编译成class文件,这个class文件就生成在jdk/bin目录里了,这样很不方便,所以我们需要把jdk配置到path里面,这样在任何目录下都能运行java.exe和javac.exe来编译Java文件了,这样就不会让jdk/bin目录里有许多我们的Java文件和class文件并且方便;
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值