黑马程序员技术交流社区

标题: jdk和jre有什么不同 [打印本页]

作者: 风一样的少年    时间: 2015-6-26 16:33
标题: jdk和jre有什么不同

JRE(Java Runtime Enviroment)是Java的运行环境。面向Java程序的使用者,而不是开发者。如果你仅下载并安装了JRE,那么你的系统只能运行Java程序。JRE是运行Java程序所必须环境的集合,包含JVM标准实现及Java核心类库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。

JDK(Java Development Kit)又称J2SDK(Java2 Software Development Kit),是Java开发工具包,它提供了Java的开发环境(提供了编译器javac等工具,用于将java文件编译为class文件)和运行环境(提供了JVM和Runtime辅助包,用于解析class文件使其得到运行)。如果你下载并安装了JDK,那么你不仅可以开发Java程序,也同时拥有了运行Java程序的平台。JDK是整个Java的核心,包括了Java运行环境(JRE),一堆Java工具tools.jar和Java标准类库(rt.jar)。

JRE主要包含:java类库的class文件(都在lib目录下打包成了jar)和虚拟机(jvm.dll);JDK主要包含:java类库的class文件(都在lib目录下打包成了jar)并自带一个JRE。那么为什么JDK要自带一个JRE呢?而且jdk/jre/bin下的client和server两个文件夹下都包含jvm.dll(说明JDK自带的JRE有两个虚拟机)。

记得在环境变量path中设置jdk/bin路径麽?老师会告诉大家不设置的话javac和java是用不了的。确实jdk/bin目录下包含了所有的命令。可是有没有人想过我们用的java命令并不是jdk/bin目录下的而是jre/bin目录下的呢?不信可以做一个实验,大家可以把jdk/bin目录下的java.exe剪切到别的地方再运行java程序,发现了什么?一切OK!(JRE中没有javac命令,原因很简单,它不是开发环境)那么有人会问了?我明明没有设置jre/bin目录到环境变量中啊?试想一下如果java为了提供给大多数人使用,他们是不需要jdk做开发的,只需要jre能让java程序跑起来就可以了,那么每个客户还需要手动去设置环境变量多麻烦啊?所以安装jre的时候安装程序自动帮你把jre的java.exe添加到了系统变量中,验证的方法很简单,去Windows/system32下面去看看吧,发现了什么?有一个java.exe。



作者: fantianfei    时间: 2015-6-26 18:42
温故而知新,
作者: 郑汉伟    时间: 2015-6-26 18:49
学而时习之
作者: keto    时间: 2015-6-26 19:29
学习。。。
作者: zlpiano    时间: 2015-6-26 19:30
好,学习一下
作者: e275919713    时间: 2015-6-26 21:39
复习了一遍
作者: java梦想    时间: 2015-6-26 21:47
今天面试的就有这个问题,我硬是没有说出来:shutup:
作者: 雏鹰起飞    时间: 2015-6-27 12:26
jdk包含jre,jdk是Java开发环境,jre包含Java虚拟机和核心类库
作者: 风一样的少年    时间: 2015-6-27 12:47
给自己赞下哈
作者: 有艺术的刺客    时间: 2015-6-27 13:27
d,r,v JDK>JRE>JVM。它们的从属关系JDK最大吧。
作者: 半山岩    时间: 2015-6-27 15:19
不错不错,算是温习了
作者: cemabenteng    时间: 2015-6-27 22:27
jdk是开发,jre是运行,安装了JDK、




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2