原文地址:http://blog.csdn.net/hx_uestc/article/details/7220625
一、JDK與jre簡(jiǎn)單的說(shuō)JDK是面向開發(fā)人員使用的SDK,它提供了java的開發(fā)環(huán)境和運(yùn)行環(huán)境。SDK是Software Development Kit 一般指軟件開發(fā)包,可以包括函數(shù)庫(kù)、編譯程序等。JDK就是Java Development KitJRE是Java Runtime Enviroment是指Java的運(yùn)行環(huán)境,是面向Java程序的使用者,而不是開發(fā)者。如果安裝了JDK,會(huì)發(fā)現(xiàn)你的電腦有兩套JRE,一套位于 /jre 另外一套位于 C:/PRogram Files/Java/j2re1.4.1_01 目錄下,后面這套比前面那套少了Server端的Java虛擬機(jī),不過(guò)直接將前面那套的Server端Java虛擬機(jī)復(fù)制過(guò)來(lái)就行了。而且在安裝JDK可以選擇是否安裝這個(gè)位于 C:/Program Files/Jav a 目錄下的JRE。如果你只安裝JRE,而不是JDK,那么只會(huì)在 C:/Program Files/Java 目錄下安裝唯一的一套JRE。JRE的地位就象一臺(tái)PC機(jī)一樣,我們寫好的 Win32應(yīng)用程序需要操作系統(tǒng)幫我們運(yùn)行,同樣的,我們編寫的Java程序也必須要JRE才能運(yùn)行。所以當(dāng)你裝完JDK后,如果分別在硬盤上的兩個(gè)不同地方安裝了兩套JRE,那么你可以想象你的電腦有兩臺(tái)虛擬的Java PC機(jī),都具有運(yùn)行Java程序的功能。所以我們可以說(shuō),只要你的電腦安裝了JRE,就可以正確運(yùn)行Java應(yīng)用程序。
1、為什么Sun要讓JDK安裝兩套相同的JRE?這是因?yàn)镴DK里面有很多用Java所編寫的開發(fā)工具(如javac.exe、jar.exe等),而且都放置在 /lib/tools.jar 里。從下面例子可以看出,先將tools.jar改名為tools1.jar,然后運(yùn)行javac.exe,顯示如下結(jié)果: Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac /Main 這個(gè)意思是說(shuō),你輸入javac.exe與輸入 java -cp c:/jdk/lib/tools.jar com.sun.tools.javac.Main 是一樣的,會(huì)得到相同的結(jié)果。從這里我們可以證明javac.exe只是一個(gè)包裝器(Wrapper),而制作的目的是為了讓開發(fā)者免于輸入太長(zhǎng)的指命。而且可以發(fā)現(xiàn)/lib目錄下的程序都很小,不大于2 9K,從這里我們可以得出一個(gè)結(jié)論。就是JDK里的工具幾乎是用Java所編寫,所以也是Java應(yīng)用程序,因此要使用JDK所附的工具來(lái)開發(fā)Java程序,也必須要自行附一套JRE才行,所以位于C:/Program Files/Java目錄下的那套JRE就是用來(lái)運(yùn)行一般Java程序用的。2、如果一臺(tái)電腦安裝兩套以上的JRE,誰(shuí)來(lái)決定呢?這個(gè)重大任務(wù)就落在java.exe身上。Java.exe的工作就是找到合適的JRE來(lái)運(yùn)行 Java程序。 Java.exe依照底下的順序來(lái)查找JRE:自己的目錄下有沒有JRE;父目錄有沒有JRE;查詢注冊(cè)表: [HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment] 所以java.exe的運(yùn)行結(jié)果與你的電腦里面哪個(gè)JRE被執(zhí)行有很大的關(guān)系。3、介紹JVM JRE目錄下的Bin目錄有兩個(gè)目錄:server與client。這就是真正的jvm.dll所在。 jvm.dll無(wú)法單獨(dú)工作,當(dāng)jvm.dll啟動(dòng)后,會(huì)使用explicit的方法(就是使用Win32 API之中的LoadLibrary()與GetProcAddress()來(lái)載入輔助用的動(dòng)態(tài)鏈接庫(kù)),而這些輔助用的動(dòng)態(tài)鏈接庫(kù)(.dll)都必須位于jvm.dll所在目錄的父目錄之中。因此想使用哪個(gè)JVM,只需要設(shè)置PATH,指向JRE所在目錄底下的jvm.dll。參考資料:http://iask.sina.com.cn/b/5580306.html?from=related
二、SDK與JDKSDK是Software Development Kit的縮寫,中文意思是“軟件開發(fā)工具包”。這是一個(gè)覆蓋面相當(dāng)廣泛的名詞,可以這么說(shuō):輔助開發(fā)某一類軟件的相關(guān)文檔、范例和工具的集合都可以叫做“SDK”。SDK是一系列文件的組合,它為軟件的開發(fā)提供一個(gè)平臺(tái)(它為軟件開發(fā)使用各種API提供便利)。JDK(Java Development Kit,Java開發(fā)工具包)是Sun Microsystems針對(duì)Java開發(fā)員的產(chǎn)品。自從Java推出以來(lái),JDK已經(jīng)成為使用最廣泛的Java SDK(Software development kit)??梢哉J(rèn)為jdk只是sdk的一種(子集),因?yàn)樗情_發(fā)java程序的一個(gè)平臺(tái),開發(fā)其他程序的sdk可以沒有jdk。比如你下載了一個(gè)軟件開發(fā)平臺(tái) eclipse-SDK-3.2.2-win32.zip,它本身里面是沒有jdk的。但是只要開發(fā)java程序就必須使用jdk(javaee和javase)。我來(lái)打個(gè)比方吧:SDK就像一臺(tái)機(jī)床(它可以是多用途的),它可以生產(chǎn)ABC等工件;當(dāng)我們要生產(chǎn)A時(shí),就給機(jī)床換上生產(chǎn)A的刀具a;當(dāng)我們要生產(chǎn)B時(shí)就換上生產(chǎn)B的刀具b;當(dāng)我們要生產(chǎn)C時(shí)就換上生產(chǎn)C的刀具c;當(dāng)我們要用機(jī)床(SDK)生產(chǎn)java程序時(shí),我們就給機(jī)床換上刀具jdk,于是就把安裝了jdk的SDK叫做java SDK.JavaEE是專門為企業(yè)級(jí)應(yīng)用提供的一個(gè)開發(fā)工具包,它里面已經(jīng)包含了許多開發(fā)企業(yè)級(jí)應(yīng)用所需要的“組件”,它為J2EE的開發(fā)提供了一個(gè)便利的開發(fā)平臺(tái),所以它就直接叫JavaEE SDK了。不知道說(shuō)明白了沒有,都是些概念性的東西,其實(shí)你也可以理解jdk就是java SDK。
三、JDK版本jdk1.0jdk1.1jdk1.2jdk1.3jdk1.4jdk1.5(改為jdk5.0)代號(hào):Tiger,老虎(這個(gè)版本進(jìn)步是巨大的,可是版本號(hào)顯示不出來(lái)。。于是改版本號(hào)為5.0)jdk6.0 代號(hào):Mustang,野馬jdk7.0 代號(hào):Dolphin,海豚從JDK1.5以后,SUN公司把它改名為J2SE5,主要是SUN感覺1.5的改進(jìn)較大只從1.4到1.5人足以說(shuō)明改進(jìn)的幅度,所以以后的就叫JDK5 JDK6了并沒有JDK4的~~
四、java ee SDK與java se jdk一般而言,前者不包括后者,如果要使用JDK6.0的功能,需要再次安裝JDK6.0
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注