我的目標是要成爲一名企業級架構師,想成爲一名合格的架構師,要學習的東西還是非常多的。Now最近就在學習關於Java虛擬機方面的知識。如果說Java的各種主流框架是招式的話,那麼深入瞭解Java虛擬機就是所謂的內在修爲,即內功。武俠小說中內力是非常有用的。首先以兩個問題開始吧,大家也可以思考一下:
1.爲什麼安裝JDK後會出現兩套JRE呢?(什麼?你不知道,你out了)
2.系統中有兩個jre,由誰來決定到底使用哪一套jre?
這兩個問題很多初學者都不是很清楚,包括一些做了幾年有點開發經驗的人。下面我來解釋一下:
1.爲什麼安裝JDK後會出現兩套JRE呢?(下圖是我安裝好jdk6.0後的目錄結構)
-jdk1.6.0_23
bin
+demo
+include
+jre
+lib
+sample
+jre6
看見沒有,有兩個紅色的jre,第二個jre提供運行Java程序的一個環境,第一個jre支持Java開發工具運行的環境,如javac、java命令,這些都是用Java語言編寫的。如果只有第二個jre那就只能支持Java程序的運行而不能支持開發,所以第二個jre的bin目錄下是沒有javac.exe命令的。簡單點說,想要進行程序開發,必須要有兩個jre。
2.系統中有兩個jre,由誰來決定到底使用哪一套jre?
這個艱鉅的任務落在了java.exe身上,當輸入java.exe命令執行一個java程序時,它會按照下面的方式來
尋找合適的jre。(什麼,我怎麼會知道的?哈哈,我也是聽人講的。《Java深度歷險》這本書裏面有說,推薦一下。)
1、首先查找自己的目錄是否有jre(windows中jvm.dll就是Java虛擬機)
2、查看父目錄下是否有jre
3、查詢系統配置(查看註冊表項)
因此可以看到,通過改變程序使用的jre,就能夠控制程序的能力和行爲。
參考書籍《Java深度歷險》、IBM\SUN虛擬機架構白皮書。
轉載來源www.boobooke.com/bbs->J2EE專區->藍山作品—Java背後的祕密(彙總)