jdk與jre的區別
對於java初學者來說,往往不懂區分jdk和jre的區別,實際上這兩個東西差別很大的,有必要了解一下:
簡單的說JDK是面向開發人員使用的SDK,它提供了Java的開發環境和執行環境。SDK是Software Development Kit 一般指軟體開發包,可以包括函式庫、編譯程式等。
JDK就是Java Development Kit
JRE是Java Runtime Enviroment是指Java的執行環境,是面向Java程式的使用者,而不是開發者。
如果安裝了JDK,會發同你的電腦有兩套JRE,一套位於 jre 另外一套位於 C:Program FilesJavaj2re1.4.1_01 目錄下,後面這套比前面那套少了Server端的Java虛擬機器,不過直接將前面那套的Server端Java虛擬機器複製過來就行了。而且在安裝JDK可以選擇是否安裝這個位於 C:Program FilesJav a 目錄下的JRE。如果你只安裝JRE,而不是JDK,那麼只會在 C:Program FilesJava 目錄下安裝唯一的一套JRE。
JRE的地位就象一臺PC機一樣,我們寫好的Win32應用程式需要作業系統幫我們執行,同樣的,我們編寫的Java程式也必須要JRE才能執行。所以當你裝完JDK後,如果分別在硬碟上的兩個不同地方安裝了兩套JRE,那麼你可以想象你的電腦有兩臺虛擬的Java PC機,都具有執行Java程式的功能。所以我們可以說,只要你的電腦安裝了JRE,就可以正確執行Jav a應用程式。
1、為什麼Sun要讓JDK安裝兩套相同的JRE?這是因為JDK裡面有很多用Java所編寫的開發工具(如javac.exe、jar.exe等),而且都放置在 libtools.jar 裡。從下面例子可以看出,先將tools.jar改名為tools1.jar,然後執行javac.exe,顯示如下結果: Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac /Main 這個意思是說,你輸入javac.exe與輸入 java -cp c:jdklibtools.jar com.sun.tools.javac.Main 是一樣的,會得到相同的結果。從這裡我們可以證明javac.exe只是一個包裝器(Wrapper),而製作的目的是為了讓開發者免於輸入太長的指命。而且可以發現lib目錄下的程式都很小,不大於2 9K,從這裡我們可以得出一個結論。就是JDK裡的工具幾乎是用Java所編寫,所以也是Java應用程式,因此要使用JDK所附的工具來開發Java程式,也必須要自行附一套JRE才行,所以位於C:Program FilesJava目錄下的那套JRE就是用來執行一般Java程式用的。
2、如果一臺電腦安裝兩套以上的JRE,誰來決定呢?這個重大任務就落在java.exe身上。Java.exe的工作就是找到合適的JRE來執行Java程式。 Java.exe依照底下的順序來查詢JRE:自己的目錄下有沒有JRE;父目錄有沒有JRE;查詢登錄檔: [HKEY_LOCAL_MACHINESOFTWAREJavaSoftJava Runtime Environment] 所以java.exe的執行結果與你的電腦裡面哪個JRE被執行有很大的關係。
3、介紹JVM JRE目錄下的Bin目錄有兩個目錄:server與client。這就是真正的jvm.dll所在。 jvm.dll無法單獨工作,當jvm.dll啟動後,會使用explicit的方法(就是使用Win32 API之中的LoadLibrary()與GetProcAddress()來載入輔助用的動態連結庫),而這些輔助用的動態連結庫(.dll)都必須位於jvm.dll所在目錄的父目錄之中。因此想使用哪個JVM,只需要設定PATH,指向JRE所在目錄底下的jvm.dll。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/477222/viewspace-975796/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JRE與JDK的區別與聯絡JDK
- JDK,JRE,JVM區別與聯絡JDKJVM
- JDK和JRE的區別 .JDK
- JDK JRE JVM 的區別JDKJVM
- jdk和jre的區別JDK
- JRE 和 JDK 的區別詳解JDK
- Jdk、Jre Jvm的區別和聯絡JDKJVM
- JDK與JREJDK
- JRE與JDK簡介JDK
- 搜尋引擎第一步(Java之JDK,JRE區別)JavaJDK
- JDK和JREJDK
- JDK,JRE,JVMJDKJVM
- JDK JRE JVMJDKJVM
- Java的JDK下Hashtable與HashMap的區別JavaJDKHashMap
- JDK,JRE和JVMJDKJVM
- JDK、JRE和JVMJDKJVM
- jre 和 jdk的關係JDK
- JDK.JRE和JVMJDKJVM
- JDK、JRE和JVM簡述JDKJVM
- 瞭解JDK、JRE、JVM及Java程式的編譯與執行JDKJVMJava編譯
- JVM、JDK、JRE三者的關係JVMJDK
- JDK裡面的JRE是什麼JDK
- JDK、JRE、J2SE SDKJDK
- Java的JDK下StringBuffer與StringBuilder的區別JavaJDKUI
- jdk8安裝後兩個資料夾,分別是jre、jdk表示什麼?JDK
- jdk1.4和jdk1.5的有那些區別JDK
- Jre庫包含的jar檔案(jdk1.6)JARJDK
- SDK、JDK、JRE 和JVM 之間的關係JDKJVM
- JDK、JRE、JVM,是什麼關係?JDKJVM
- jdk、jre、jvm三者關係JDKJVM
- Jdk代理和CGLIB代理的區別JDKCGLib
- 不同JDK版本之間的intern()方法的區別-JDK6 VS JDK6+JDK
- Java 基本概念:jvm、jdk、jre、jseJavaJVMJDKJS
- 【Eclipse】--Eclipse.ini,JDK,JRE,JVMEclipseJDKJVM
- Dubbo和JDK的SPI究竟有何區別?JDK
- 動態代理jdk和cglib的區別JDKCGLib
- cglib動態代理和jdk動態代理的區別與應用CGLibJDK
- 學習scala,java安裝jdk及jre的問題JavaJDK