jdk和jre的區別
關於jdk和jre
大家肯定在安裝JDK的時候會有選擇是否安裝單獨的jre,一般都會一起安裝,我也建議大家這樣做。因為這樣更能幫助大家弄清楚它們的區別:
Jre 是java runtime environment, 是java程式的執行環境。既然是執行,當然要包含jvm,也就是大家熟悉的虛擬機器啦,還有所有java類庫的class檔案,都在lib目錄下打包成了jar。大家可以自己驗證。至於在windows上的虛擬機器是哪個檔案呢?學過MFC的都知道什麼是dll檔案吧,那麼大家看看jre/bin/client裡面是不是有一個jvm.dll呢?那就是虛擬機器。
Jdk 是java development kit,是java的開發工具包,裡面包含了各種類庫和工具。當然也包括了另外一個Jre. 那麼為什麼要包括另外一個Jre呢?而且jdk/jre/bin同時有client和server兩個資料夾下都包含一個jvm.dll。說明是有兩個虛擬機器的。這一點不知道大家是否注意到了呢?
相信大家都知道jdk的bin下有各種java程式需要用到的命令,與jre的bin目錄最明顯的區別就是jdk下才有javac,這一點很好理解,因為 jre只是一個執行環境而已。與開發無關,正因為如此,具備開發功能的jdk自己的jre下才會同時有client性質的jvm和server性質的 jvm, 而僅僅作為執行環境的jre下只需要client性質的jvm.dll就夠了。
記得在環境變數path中設定jdk/bin路徑麼?這應該是大家學習Java的第一步吧,老師會告訴大家不設定的話javac和java是用不了的。確實jdk/bin目錄下包含了所有的命令。可是有沒有人想過我們用的java命令並不是 jdk/bin目錄下的而是jre/bin目錄下的呢?不信可以做一個實驗,大家可以把jdk/bin目錄下的java.exe剪下到別的地方再執行 java程式,發現了什麼?一切OK!
那麼有人會問了?我明明沒有設定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程式也算是客戶環境下的一種測試。
相關文章
- JDK和JRE的區別 .JDK
- JRE 和 JDK 的區別詳解JDK
- Jdk、Jre Jvm的區別和聯絡JDKJVM
- JDK JRE JVM 的區別JDKJVM
- jdk與jre的區別JDK
- JRE與JDK的區別與聯絡JDK
- JDK,JRE,JVM區別與聯絡JDKJVM
- JDK和JREJDK
- JDK,JRE和JVMJDKJVM
- JDK、JRE和JVMJDKJVM
- jre 和 jdk的關係JDK
- JDK.JRE和JVMJDKJVM
- JDK、JRE和JVM簡述JDKJVM
- 搜尋引擎第一步(Java之JDK,JRE區別)JavaJDK
- JDK與JREJDK
- JDK,JRE,JVMJDKJVM
- JDK JRE JVMJDKJVM
- jdk1.4和jdk1.5的有那些區別JDK
- SDK、JDK、JRE 和JVM 之間的關係JDKJVM
- Jdk代理和CGLIB代理的區別JDKCGLib
- Dubbo和JDK的SPI究竟有何區別?JDK
- 動態代理jdk和cglib的區別JDKCGLib
- JRE與JDK簡介JDK
- JVM、JDK、JRE三者的關係JVMJDK
- JDK 和 CGLib 實現動態代理和區別JDKCGLib
- JDK裡面的JRE是什麼JDK
- JDK、JRE、J2SE SDKJDK
- jdk8安裝後兩個資料夾,分別是jre、jdk表示什麼?JDK
- JDK內建執行緒池的共同點和區別JDK執行緒
- 【4】JDK和CGLIB生成動態代理類的區別JDKCGLib
- Jre庫包含的jar檔案(jdk1.6)JARJDK
- JDK、JRE、JVM,是什麼關係?JDKJVM
- jdk、jre、jvm三者關係JDKJVM
- 不同JDK版本之間的intern()方法的區別-JDK6 VS JDK6+JDK
- Java的JDK下Hashtable與HashMap的區別JavaJDKHashMap
- Java 基本概念:jvm、jdk、jre、jseJavaJVMJDKJS
- 【Eclipse】--Eclipse.ini,JDK,JRE,JVMEclipseJDKJVM
- 徹底搞清楚ConcurrentHashMap的實現原理(含JDK1.7和JDK1.8的區別)HashMapJDK