JDK:Java Development Kit
Java开发包
JRE:Java Runtime Environment
Java运行环境
从名字就能看出,JRE是JDK的子集,举个通俗的例子,如果只是想运行.class文件,JRE就够了。但是要想编写运行.java文件,就得要JDK。具体JDK和JRE在组成上的区别可以见下图:
Java技术体系图:
除了JRE之外,JDK还提供了Java编译器(javac),开发工具比如 Javadoc,Java调试用的Jconsole等等。
总体来看:JDK > JRE > JVM。
另外,一般解压下载的Java包会有两个JRE:与JDK平行的JRE和JDK目录下的JDK,二者有什么区别呢?
其实二者基本相同,jdk有jre是因为:
① jdk是开发包,在开发中肯定要运行调试,从逻辑上讲,jdk中包含jre也是必要的;
② jdk的很多命令比如javac等,本身也是由java写的应用程序,其运行需要jre环境的支持;
③ 单独的jre比jdk下的jre多了服务端的JVM,而独立的jre是安装时候就默认添加进系统的环境变量中的,jdk下的jre需要手动添加。
有一点要注意一下,其实开篇说的“只运行.class文件就只需要JRE”很容易产生一个误区:只要我只打算运行Java程序或应用,不进行任何Java开发,就不需要安装jdk。这不是绝对的,一方面,想要运行的Java代码可能还未编译,即第一次转化为.class文件还没有完成(当然这种情况很少);还有一种情况,例如,使用JSP部署Web应用程序,那么从技术上讲,这只是在应用程序服务器中运行Java程序,但是应用程序服务器会将 JSP 转换为 Java servlet,而servlet本质还是.java代码,仍然需要使用 JDK 来编译成class文件才能运行。
参考:JDK 和 JRE