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