2014-09-24 71 views
0

JDK是JRE的超集。 JDK具有必要的工具,如javac java.exe調試器等+ JRE。 但JRE具有JVM的特定實現。完全與java.exe混淆

我的假設是java.exe或java應用程序啓動器是解釋器(請糾正我,如果我錯了)。另外,JVM也會進行解釋。

最後是JVM的解釋器部分還是JDK工具的一部分?請解釋。

+5

我總是輕輕地建議我的朋友研究文檔的。 - [相關StackOverflow問題](http://stackoverflow.com/questions/1906445/what-is-the-difference-between-jdk-and-jre) – Coffee 2014-09-24 15:31:48

+0

我的問題是不是區別b/w JDK,JRE等。我懷疑的是,如果我的系統中只有JRE,那麼JVM如何使用實際上是JDK工具一部分的解釋器。 – karthik4621 2014-09-24 18:31:28

+1

@ karthik4621 JRE *是* JVM(再加上一點點)。它*是字節碼解釋器。 – 2014-09-24 19:51:35

回答

-2

你是對的java.exe是是你的代碼被通過與底層操作系統進行通信執行的JVM(Java虛擬機)和JVM解釋

+0

它是什麼解釋? – 2014-09-24 15:42:09

+0

@SotiriosDelimanolis Java字節碼? – 2014-09-24 15:43:53

+0

但我的問題是,如果我的系統中只有JRE,那麼JVM如何使用實際上是JDK工具一部分的解釋器。 – karthik4621 2014-09-24 18:16:19

-1

@ karthik4621的java.exe/javaw進程的應用是JRE的一部分查看JRE安裝目錄以查找bin文件夾,找到可執行文件以及與JDK一起發現的java.exe也是一樣的:)爲了更好地瞭解這個問題,我建議你通過oracle文檔以及快速刷JDK/JRE安裝位置的內容的更新 -

+0

嘗試使用可用的java.exe JRE的bin目錄解釋一個字節代碼(任何每個已編譯的.class文件以瞭解其差異,並確保在JDK安裝位置刪除指向java.exe的路徑環境變量) – snoopy 2014-09-24 19:55:20

10

java.exe既不是JVM也不是解釋器。這是一個發射 - 通常是C語言編寫的一個小程序,它具有以下功能:

  1. 定位已安裝JRE
  2. 加載JVM動態鏈接庫(jvm.dll
  3. 使用創建一個新的Java虛擬機Invocation API
  4. 查找主類,並調用使用main()方法JNI

JRE大致由

  1. JVM - jvm.dll
  2. 類庫 - rt.jar
  3. 本地庫 - 類庫和OS平臺之間的層,例如java.dllnet.dllnio.dllawt.dll
  4. 資源 - 字體,屬性,字符串等

現在,字節碼解釋器,字節碼校驗器,類裝載器,JIT編譯器,垃圾收集和許多其他很酷的東西 - 都是Java虛擬機的一部分。

+0

非常感謝您的解釋 – karthik4621 2014-10-14 14:40:52