有些東西,你懂不懂其實並不太影響你干活,但有些人就是有疑惑就非得弄懂,不然渾身難受,我大概就是這種德性的。昨天安裝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目錄中(如D\java\jdk\jre)。
公共JRE
公共JRE可由其它Java應用程序使用,並且包含在JDK外部(如D\Java\jre)。公共JRE會注冊到Windows注冊表(位於HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft)中。公共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,重新安裝。