什么是JDK和JRE?它们的概念与区别分析

jdk跟jre有啥区别(它们的概念与区别分析)(1)

用了很久的JDK,但是从来也没具体的了解过它,只知道它大概是 JAVA Development Kit 的缩写,装了JDK配置了环境变量,才能编译启动Java程序。关于它的版本也是,一般只知道7或8,但是也不知道有啥区别,反正都能用。上次我们说了JVM,这回就上升一下,来看看JDK和JRE都是啥,并打通这些知识点,明白它们的关系。

1.JRE是啥

先说JRE,在我们装JDK的时候,经常会发现即安装了JDK也安装了JRE,也不知道他们有什么区别。

JRE(Java Runtime Environment)是JAVA运行时环境,它是运行已编译Java程序所需的所有内容的集合,包括Java虚拟机(JVM),Java核心类库和一些基础的构件。

有些人认为如果是运行,那JVM不就够了吗,其实还不够,因为在解释class文件时,JVM需要调用解释所需要的类库 lib。jre的安装目录下,里面有两个文件夹bin和lib,笼统的分析下,这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。

jre里有运行.class的java.exe文件,至于虚拟机则是jre安装目录/bin/server目录下的jvm.dll文件

jdk跟jre有啥区别(它们的概念与区别分析)(2)

但是,它不能用于创建新程序。它只包括了运行的能力,不具备开发的能力,它无法将java文件编译成.class字节码文件,但是它可以直接跑.class字节码文件,你在其他电脑上编译好java程序,拿到仅有JRE环境的电脑也可以正常使用。

jdk跟jre有啥区别(它们的概念与区别分析)(3)

2.JDK是啥

JDK(Java Development Kit)是Java的开发工具包,它不仅提供了Java程序运行所需的JRE,还提供了一系列的编译,运行等工具,如javac,java,javaw等。通过这里,我们可以明白三个J的包括关系了:JDK》JRE》JVM,所以我们在安装JDK时,通常不需要考虑JRE,JVM之类的,只要你安装好了JDK,其他两个就都有了。

简单列举一下JDK包括的一些开发工具:

  • javac – 编译器,将源程序转成字节码。
  • jar – 打包工具,将相关的类文件打包成一个文件。
  • javadoc – 文档生成器,从源码注释中提取文档。
  • jdb – debugger,查错工具。
  • java – 运行编译后的java程序(.class后缀的)。
  • appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
  • Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
  • Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
  • Jconsole: Java进行系统调试和监控的工具。

有时候还会有人提到SDK,SDK(Software Development Kit )是指软件开发包,它不仅限于JAVA,很多软件也有自己的SDK,更像一个统称,是专门给第三方开发者提供的软件开发工具集合。

所以SDK实际上和JDK没啥直接联系,SDK比较抽象,JDK则是具体指Java开发工具包,它们两都不是一个次元的,硬要说的话,JDK可以被描述成Java开发的SDK

,