JDK与JRE的关系
安装
安装jdk时会提示是否安装JRE,一般选择安装。
安装完成后,需要配置环境变量,将jdk的bin目录添加到系统path中。
问题——JDK与JRE有什么区别和联系呢???
区别与联系
Jre (java runtime environment)——用于环境, 是java程序的运行环境。虚拟机在jre/bin/client里面——jvm.dll(由于现在硬件性能较高,所以很多都已经废弃了虚拟机client模式,即jvm在jre/bin/server——jvm.dll);所有java类库的class文件,都在lib目录下打包成了jar。
Jdk (java development kit)——用于开发,是java的开发工具包,里面包含了各种类库和工具。JDK也包括了一个Jre,那么为什么要包括另外一个Jre呢?而且jdk/jre/bin同时有client和server两个文件夹下都包含一个jvm.dll(一般废弃client模式)。 说明是有两个虚拟机的。这一点不知道大家是否注意到了呢?
javac:相信大家都知道jdk的bin下有各种java程序需要用到的命令,与jre的bin目录最明显的区别就是jdk下才有javac,jre用于提供与运行环境,不需要自己手动去编译开发,所以也就不需要javac。
path:安装完jdk后,配置将jdk的bin目录添加到path中,但是 在命令行运行的java 命令(java.exe)实际上是jre/bin中的命令,即使不配置jdk路径也能运行(javac不行)。
那么有人会问了?我明明没有设置jre/bin目录到环境变量中啊?
试想一下如果java为了提供给大多数人使用,他们是不需要jdk做开发的,只需要jre能让java程序跑起来就可以了,那么每个客户还需要手动去设置环境变量多麻烦啊?所以安装jre的时候安装程序自动帮你把jre的java.exe添加到了系统变量中,验证的方法很简单,大家看到了系统环境变量的 path最前面有“%SystemRoot%system32;%SystemRoot%;”这样的配置,那么再去Windows/system32下面去看看吧,发现了什么?有一个java.exe。
如果强行能够把jdk/bin挪到system32变量前面,当然也可以迫使使用jdk/jre里面的java,不过除非有必要,我不建议大家这么做。使用单独的jre跑java程序也算是客户环境下的一种测试。
【参考源】https://blog.csdn.net/liupeng900605/article/details/7651500