JDK與JRE的關(guān)系和path的作用淺談
對于JDK與JRE的關(guān)系以及path的配置問題首先我們來看下一些概念:
JDK(Java develop kit ,Java開發(fā)套件),JRE(Java runtime environment,Java運(yùn)行時環(huán)境),JVM(Java virtual machine,Java虛擬機(jī))
- JDK
- ++
- |-----JRE
- ++
- |-------JVM
- |-------
JDK與JRE的關(guān)系以及path的配置中,JRE只是JDK的一個部分,我們只要擁有了一份JDK就可以進(jìn)行Java程序開發(fā)了,而顧名思義,JRE是Java運(yùn)行的時候所依賴的平臺,JVM則更只是JRE的一個部分,JRE除了虛擬機(jī)外還提供了眾多鏈接庫,這些庫會被JVM在運(yùn)行時調(diào)用。
我們會發(fā)現(xiàn)java_home/下有一個bin文件夾和一個JRE文件夾,而JRE文件夾下也有一個bin文件夾,它們一樣嗎?顯然不一樣。
java_home/bin中的工具是sun公司提供給我們一些工具,如java.exe,javac.exe,而jre/bin下的工具是運(yùn)行時所需的,于是我們可以發(fā)現(xiàn)java_home/bin下有一個javac.exe,而jre/bin下肯定沒有javac.exe,這是很容易解釋的。
奇怪的是,Sun公司給我們提供了兩套JRE,稍留意一下我們就會發(fā)現(xiàn)在裝完JDK,還可以選擇裝一個JRE,這個JRE是被默認(rèn)裝到C:\Program Files\Java下的。sun提供兩套JRE是有道理的,如果我們只是想運(yùn)行Java程序,那么去官網(wǎng)下一個JRE就行了,而無需拿來一個JDK,如果是要開發(fā)Java程序那就需要一個JDK了."JDK里面的工具幾乎都是用Java寫的,所以JDK本身就是Java應(yīng)用程序,因此要使用JDK附的工具來開發(fā)Java程序也必須要自行附一套JRE才行,這就是java_home\jre存在的原因,而位于Program File\jre的那套JRE就是拿來執(zhí)行我們自己寫的Java應(yīng)用程序的。不過,兩套中任何一套JRE都可以拿來執(zhí)行我們所寫的Java應(yīng)用程序,可是JDK內(nèi)附的開發(fā)工具在預(yù)設(shè)開發(fā)工具使用包裝器(.exe)來啟動的情況下,都拿自己支選用java_home\jre".(《Java深度歷險》)
因此,現(xiàn)在可以明白設(shè)path和classpath的作用了:path是為JDK提供的那些工具設(shè)的,如java.exe,javac.exe,而classpath是為Java程序所用到的庫文件所設(shè)的,于是path設(shè)成:java_home\bin;而classpath設(shè)為:java_home\jre\lib\rt.jar,如果我們開發(fā)的一個應(yīng)用中用到了非j2se提供的庫文件,則需將這些文件加到classpath中,比如說利用javamail開發(fā)一個郵件應(yīng)用,就應(yīng)該把mail.jar
等文件加到classpath中:java_home\jre\lib\ext\mail.jar;.
如果一臺PC上裝了幾個JRE,那么就要注意了,有時很容易產(chǎn)生問題,很可能我們用來編譯Java程序的javac.exe所相關(guān)的JRE與運(yùn)行程序時所用的JRE不是一個版本, 這可能會產(chǎn)生版本沖突,這可以通過設(shè)定path變量來解決。
最后應(yīng)用中的第三方文件應(yīng)該加到j(luò)ava_home\jre\lib\ext下,就像剛才那樣,與Java相關(guān)的安全設(shè)定檔都放置java_home\jre\lib\security。最后擴(kuò)展一點(diǎn),與Java相關(guān)的很多工具的path設(shè)定原則都與上述差不多,比如說想安裝一個Ant,應(yīng)該在path 中這樣設(shè):
- F:\\Ant\apache-ant-1.6.5\bin;
看看bin下有什么就明白這樣做是為了指定命令工具ant所在的目錄。
JDK與JRE的關(guān)系以及path的配置那么就先介紹到這里,那么這些相關(guān)的學(xué)習(xí)在其他文章中還會滲透。
【編輯推薦】