簡單的說就是: JRE = Java 運行時環境,有了它就能運行Java程序,可以理解爲java虛擬機。 jdk是java的開發包,其中包括jre;jre僅僅是java的運行時環境;而JDK包括了同版本的JRE,此外還包括有編譯器和其它工具。 JDK是java開發工具包(java Development Kit)的縮寫。它是一種構建在java平臺上發佈的應用程序、apple和組件的開發環境。JDK是一切java應用程序的基礎,所有的java應用程序是構建在這個之上的。它是一組API,也可以說是一些java Class。要成爲一個Java程序員,JDK是必不可少的最基本的工具。 JRE是Java運行環境(Java Runtime Enviroment)的縮寫。它基本上就和Java虛擬機是同一個概念。一般來說,在談論一個具體的產品的時候,可以說“JRE”,而說到理論中的一個模型的時候,我們常用的是“Java虛擬機”。要使用Java程序,JRE是必不可少的環境。 如果機子裏安裝了多個版本的jdk,如下: BEA Weblogic Server 7.0 自帶一套 JDK1.3.1_02 6套JRE,每套JRE都被各自安裝到不同的目錄,不會互相影響。當在控制檯執行java.exe,操作系統尋找JRE的方式如下: 先找當前目錄下有沒有JRE 最常用的是在PATH路徑中找JRE,一般情況下,自己的程序運行之前都會先在批處理文件裏面臨時設置PATH,把自己用的JRE放到PATH路徑最前面,所以肯定會運行自己帶的JRE,不會造成版本混亂。 SDK(Software Develop Kit,軟件開發工具包),用於幫助開發人員的提高工作效率。各種不同類型的軟件開發,都可以有自己的SDK。Windows有Windows SDK,DirectX 有 DirectX 9 SDK,.NET開發也有Microsoft .NET Framework SDK。JAVA開發也不含糊,也有自己的Java SDK。
根據圖上顯示的關係,JDK包含JRE,JRE包含JVM。 1、爲什麼Sun要讓JDK安裝兩套相同的JRE?這是因爲JDK裏面有很多用Java所編寫的開發工具(如javac.exe、jar.exe等),而且都放置在 \lib\tools.jar 裏。從下面例子可以看出,先將tools.jar改名爲to ols1.jar,然後運行javac.exe,顯示如下結果: Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac /Main 這個意思是說,你輸入javac.exe與輸入 java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main 是一樣的,會得到相同的結果。從這裏我們可以證明javac.exe只是一個包裝器(Wrapper),而製作的目的是爲了讓開發者免於輸入太長的指命。而且可以發現\lib目錄下的程序都很小,不大於2 9K,從這裏我們可以得出一個結論。就是JDK裏的工具幾乎是用Java所編寫,所以也是Jav a應用程序,因此要使用JDK所附的工具來開發Java程序,也必須要自行附一套JRE才行,所以位於C:\Program Files\Java目錄下的那套JRE就是用來運行一般Java程序用的。 2、如果一臺電腦安裝兩套以上的JRE,誰來決定呢?這個重大任務就落在java.exe身上。Java.exe的工作就是找到合適的JRE來運行Java程序。 Java.exe依照底下的順序來查找JRE:自己的目錄下有沒有JRE;父目錄有沒有JRE;查詢註冊表: [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java 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。 |
SDK、JDK、JRE和JVM的關係
摘自:
2007年09月22日 星期六 16:14
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.