2010-08-10 43 views
0

聲明「所有Java字節碼解釋器都是JVM,但所有JVM都不是Java解釋器」是真的嗎?語句「所有Java字節碼解釋器都是JVM,但所有JVM都不是Java解釋器」是真的嗎?

我真的很困惑,因爲JVM僅用於運行Java程序。還是它可以做其他任何事情?

+0

你能提供一個鏈接到你讀到這篇文章在哪裏? – 2010-08-10 09:48:02

+1

非常奇怪,這樣的問題在兩天內彈出兩次:http://stackoverflow.com/questions/3442387/difference-between-java-interpreter-and-jvm – ewernli 2010-08-10 09:52:34

+0

這是一種趨勢:) – 2010-08-10 09:55:31

回答

1

也許這意味着「某些JVM使用只是在實時編譯(JIT),而不是解釋VM代碼」

0

你可以寫任何編程語言,比如Java中的一個解釋。例如,有一個用Java編寫的Python解釋器,這意味着它運行在JVM上,但不是Java編程語言的解釋器。 這裏把「口譯員」作爲一個儘可能寬鬆的術語。

2

Java虛擬機(JVM)可以執行Java bytecode。而Java編譯器可以基於Java源文件創建Java字節碼。

但是還有其他語言的編譯器(如Scala)也可以創建Java字節碼,並且可以由JVM執行。

順便說一句 - 一個JVM不'解釋Java'。它會解釋字節碼,並可能將其編譯爲機器碼,如果有意義的話。

1

是的,有區別。

Java虛擬機:

軟件「執行引擎」安全地和兼容地執行在微處理器上在Java類文件中字節代碼(無論是在計算機或其他電子裝置)。

Java解釋:

交替進行解碼,並在一些代碼體執行每個語句模塊。 Java解釋器解碼並執行Java虛擬機的字節碼。

Java解釋器實際上是JVM的一部分。虛擬機不僅僅是執行字節碼,它還有許多任務要做。這個全面的環境被稱爲JVM。

檢查:

相關問題