有些东西,你懂不懂其实并不太影响你干活,但有些人就是有疑惑就非得弄懂,不然浑身难受,我大概就是这种德性的。昨天安装javaSE的时候,看到jdk中有个jre文件夹,而根目录下又有个jre文件夹,非常困惑,难道不一样吗?带着问题,上网查了一会儿,果然,还是有点明灯的人~
首先看看JDK和JRE分别在开发中的作用吧。
JRE
是Java Runtime Environment,是java程序的运行环境。既然是运行,当然要包含JVM(Java Virtual Machine),也就是虚拟机,还需要包含java类库的class文件,在jre/lib目录下打包成了jar。
JDK
是Java Development Kit,是java的开发工具包,里面包含了各种类库和工具,当然也包括了另外一个jre。
那么为什么还包含了一个jre文件呢?
可以看到,其中一个jre文件在jdk内部,一个jre文件在jdk外部,这就是所谓的专用JRE和公用JRE
专用JRE
安装JDK时,会安装一个专用JRE,并且你可以选择安装一个公共副本,需要专用JRE才能运行JDK中包含的工具。专用JRE没有注册表设置,并且完全包含在仅对JDK已知的Java目录中(如Djavajdkjre)。
公共JRE
公共JRE可由其它Java应用程序使用,并且包含在JDK外部(如DJavajre)。公共JRE会注册到Windows注册表(位于HKEY_LOCAL_MACHINESOFTWAREJavaSoft)中。公共JRE可以使用“添加/删除程序”进行删除,并且还会注册到浏览器。
我们知道运行JAVA程序的时候,只需要JRE就能够运行了,而并不需要使用JDK中的开发工具(如javac java等等),公共JRE就是为运行加载到计算机中的JAVA程序来提供运行环境的,也就是说,如果我们并不需要开发JAVA程序,而仅仅是运行他人已有的JAVA程序时,仅仅安装这个在 JDK外部的JRE文件就足够了。但是如果我们需要开发JAVA程序,那么就必须安装JDK,JDK中包含专用JRE和开发工具,这些开发工具需要专用JRE才能够使用,也就说专用JRE是为我们开发JAVA程序准备的。
要注意,这两个JRE文件中的内容是有区别的,所以不能够简单的进行替换。
同时注意平时所说的“java自动更新”根本不是所安装的JDK版本的更新,它指的是这个公用JRE运行时环境的更新,这个更新为的是让你的计算机能够使用最新版本正常的运行一些网站或则Web应用等等当中的java程序,如果不及时更新的话,可能我们在浏览一些网页或者web应用时,不能够正常的交互和显示,这与JDK没有任何的关系,很多人认为“java的自动更新”指的是JDK版本的自动更新,这就大错特错了。所以如果我们要想升级JDK的版本,只能够从官网中下载最新版本的JDK,重新安装。