- JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。
- JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境。
具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试和分析的工具。简单来说:如果你需要运行 java 程序,只需安装 JRE 就可以了,如果你需要编写 java 程序,需要安装 JDK。
详情
JRE是Java Runtime Enviroment,是指Java程序的运行环境,是面向Java程序的使用者,而不是开发者。如果你仅下载并安装了JRE,那么你的系统只能运行Java程序。JRE是运行Java程序所必须环境的集合,包含JVM标准实现及 Java核心类库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。
JDK就是Java开发工具包,里面包含了各种类库和工具,还包括了另外一个jre。jdk提供了Java的开发环境(提供了编译器javac等工具,用于将java文件编译为class文件)和运行环境(提供了JVM和Runtime辅助包,用于解析class文件使其得到运行)。如果你下载并安装了JDK,那么你不仅可以开发Java程序,也同时拥有了运行Java程序的平台。
jdk与jre的区别
JRE主要包含:java类库的class文件(都在bin目录下打包成了jar)和虚拟主机(jvm.dll) JDK主要包含:java类库的class文件(都在bin目录下打包成了jar)并自带一个JRE
为什么Sun要让JDK安装两套相同的JRE?
这是因为JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe 等),而且都放置在/lib/tools.jar里。如果我们将tools.jar改名为tools1.jar,然后运行javac.exe,显示如下结果:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac/Main
这个意思是说,你输入javac.exe与输入java -cp c:/jdk/lib/tools.jar com.sun.tools.javac.Main 是一样的,会得到相同的结果。从这里我们可以证明javac.exe只是一个包装器(Wrapper),而制作的目的是为了让开发者免于输入太长的指命。 而且可以发现/lib目录下的程序都很小,不大于29K,从这里我们可以得出一个结论。就是JDK里的工具几乎是用Java所编写,所以也是Java应用 程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于JDK目录下的那套JRE就是用来运行一般Java程序的。
如果一台电脑安装两套以上的JRE,谁来决定呢?
这个重大任务就落在java.exe身上。java.exe的工作就是找到合适的JRE来运 行Java程序。java.exe依照以下的顺序来查找JRE:
- 自己目录下有没有JRE
- 父目录有没有JRE
- 查询注册表[HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment]
所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关系。