JDK和JRE的区别

1. JDK

  • 全称:Java Development Kit,是Java开发工具包
  • 它提供了Java的开发环境(提供了编译器javac等工具,用于将java文件编译为class文件)和运行环境(提供了JVM和Runtime辅助包,用于解析class文件使其得到运行,也就是JRE)。
  • JDK是整个Java的核心,包括了Java运行环境(JRE),一堆Java工具tools.jar和Java标准类库 (rt.jar)。

2. JRE

  • 全称:Java Runtime Enviroment,是Java的运行环境。
  • 面向Java程序的使用者,而不是开发者,即只能运行Java程序(也就是.class文件),不能开发Java程序。
  • JRE是运行Java程序所必须环境的集合,包含JVM标准实现及 Java核心类库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。

3. 区别

JRE主要包含:java类库的class文件(都在lib目录下打包成了jar)和虚拟机(jvm.dll);

JDK主要包含:java类库的class文件(都在lib目录下打包成了jar)并自带一个JRE。

总结:

  • JDK是包括JRE的,而且还额外的多出编译器,调试器,以及一些开发的jar包
  • jre是负责运行.class文件的,没有jre java项目是运行不了的,jre是包括JVM的,因为运行需要jvm来解释执行.class文件,以及配置运行的系统,

JDK和JRE的区别

4. 相关问题

(1)安装JDK的时候为什么会有两个JRE

​ 分担工作:当用户只需要执行 java 的程序时,单独的jre即可。当用户开发时,系统就会优先去找“ java 、 javac ”这些命令本身的目录或者他们的父目录的 jre ;总结一下就是,开发时一般运行的是 jdk 下的 jre ;而运行外部程序时,一般运行的是单独的jre ,实现了分工,不同的 jre 负责各自范围的内容。

(2)谁来决定使用哪个JRE

​ 这个重大任务就落在java.exe身上。java.exe的工作就是找到合适的JRE来运行Java程序。 java.exe依照底下的顺序来查找JRE:自己的目录下有没有JRE;父目录有没有JRE;查询注册表:[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment],所以java.exe的运行结果与哪个JRE被执行有很大的关系。