作爲一個側面項目的背景,我一直在閱讀有關不同的虛擬機設計,JVM當然獲得最多的新聞。我也看了BEAM(Erlang),GHC的RTS(一種但不是VM)和一些JavaScript實現。 Python也有一個我知道存在的字節碼解釋器,但沒有多讀。將虛擬機設計與主要編程語言相匹配
我沒有找到的是的一個很好的解釋,爲什麼特定的虛擬機設計選擇是針對特定語言進行的。我對能夠適應併發和/或非常動態(Ruby,JavaScript,Lisp)語言的設計選擇特別感興趣。
編輯:在迴應評論請求特異性下面是一個例子。 JVM使用堆棧機器而不是註冊機器,這在Java引入時非常具有爭議性。事實證明,設計JVM的工程師已經完成了想要的平臺可移植性,並且將堆棧機器轉換回寄存器機器更容易且更高效,然後克服虛擬太多或太少寄存器的阻抗不匹配。
下面是另一個例子:對於Haskell,要看的論文是Implementing lazy functional languages on stock hardware: the Spineless Tagless G-machine。這與我瞭解的任何其他類型的虛擬機非常不同。事實上,GHC(Haskell的首要實現)並不是直播,而是作爲編譯的中間步驟。 Peyton-Jones列出了不少於8個不起作用的其他虛擬機。我想了解爲什麼有些虛擬機在其他失敗的情況下取得成功。
這是一個太廣泛的話題。你能給出你最感興趣的設計的某些特定方面嗎?或者其他任何例子。無論如何,因爲這可能會導致一些有趣的答案。 – Jivings
Dalvik JVM使用基於寄存器的體系結構 - http://en.wikipedia.org/wiki/Dalvik_(software) – SpacedMonkey
您應該查看Parrot http://www.parrot.org/的文檔,該文檔最初設計用於Perl,但後來被用於其他幾種語言。該文檔討論了動態類型語言的VM功能與更多靜態語言(如Java)的關係。 – Gene