1. 程式人生 > >jdk,jre,jvm三者的聯絡和區別

jdk,jre,jvm三者的聯絡和區別

三者聯絡Java 喊出的帶有標誌性的口號“ Write Once , Run Anywhere (一次編寫,到處執行)”,正是建立在 JRE 的基礎之上。何以實現?就是在 Java 應用程式和作業系統之間增加了一虛擬層-- JRE 。程式原始碼不是直 接編譯、連結成機器程式碼,而是先轉化到位元組碼( bytecode ) 這種特殊的中間形式,位元組碼再轉換成機器碼或系統呼叫。前者是傳統的編譯方法,生成的機器程式碼就不可避免地跟特殊的作業系統和特殊的機器結構相關。而 Java 程式的位元組碼檔案可以放到任意裝有 JRE 的計算機執行,再由不同 JRE 的將它們轉化成相應的機器程式碼,這就實現了 Java 程式的可移植性。這樣程式設計師也不用去 關心程式執行的具體環境,而可以專心編寫軟體。這種分層抽象、隱藏細節的思想在電腦科學中處處可見,比如機器組織結構的設計、網路協議的實現等。 Pascal 語言的發明者 Niklaus Wirth ,就富有預見性地指出應該有這樣一種可移植的語言,其生成的中間程式碼可以在一臺假想的機器( a hypothetical machine )上執行。而 Java 虛擬機器( Java virtual machine 或 JVM )就是這樣的一臺機器,它模擬實際處理器的結構,解釋位元組碼。 怎麼一會說是 JRE ,一會兒又成了 JVM ,兩者是否同物不同名? 回答是否定的。JRE的地位就象一臺PC機一樣,我們寫好的Win32應用程式需要作業系統幫 我們執行,同樣的,我們編寫的Java程式也必須要JRE才能執行。要執行Applet,在客戶端必須安裝有 JRE,即“執行時”,容易一點理解,就象所謂的“外掛”,要開發JAVA應用程式\Web應用,就必須在伺服器端安裝相應的 JVM+JDK 了(開發應用 Java web應用 時,客戶端不需要安裝任何的JVM) 如果你使用JAVA開發應用,就需要安裝 JRE+JDK,就是 J2SE. 如果在客戶端執行Applet,客戶端瀏覽器必須嵌有JAVA JVM,如果沒有,就需要安裝,即: 在客戶端建立JRE(執行時,包含JVM),而客戶端是不需要做開發的,所以,JDK就沒有必要安裝 了。 不同版本的Applet在不同的JVM下可能無法正常執行,而Microsoft JVM只是Sun JVM的“低版本”,微軟在windows xp/2003中乾脆將JVM去掉了.