我是一個主要的.NET開發人員,我做了很多基礎性工作與像ESX和Hyper-V的科技股。我覺得很奇怪的是,JVM有VM在它(我一直在一個ESX服務器上坐在形式的虛擬機的思考)。JVM是VM的一種形式嗎?
我是否正確地說JVM是位於操作系統和應用程序之間的特定環中的實際VM(而不是硬件和操作系統之間)?
感謝
我是一個主要的.NET開發人員,我做了很多基礎性工作與像ESX和Hyper-V的科技股。我覺得很奇怪的是,JVM有VM在它(我一直在一個ESX服務器上坐在形式的虛擬機的思考)。JVM是VM的一種形式嗎?
我是否正確地說JVM是位於操作系統和應用程序之間的特定環中的實際VM(而不是硬件和操作系統之間)?
感謝
它以同樣的方式在虛擬機的CLR(.NET的一部分)是一個虛擬機。這是不太一樣的Hyper-V的虛擬機類型......雖然Hyper-V的虛擬化常見的硬件,使得大部分代碼「認爲」它確實直接正常的計算機上運行運行一個完整的操作系統。
JVM或CLR是在稍有不同:
這兩種類型的「虛擬機」的運行在虛擬環境中的代碼,但兩者的主要關注點有很大的不同。
是的,JVM獲取字節碼並執行它,並且它能夠對應用程序實施安全限制。
的Java語言(.NET,和Python,和鸚鵡......)虛擬機是一個「模擬計算機。」它具有在VM運行的操作系統上相同的指令和行爲,這使得「跨平臺」方面可以工作。虛擬機本身是特定於平臺的,當然,這是爲了消除客戶端代碼的細節。
所以,一切回到Infocom Z-Machine和Knuth的MIX虛擬機實際上都是「虛擬機」。
雖然ESX和Hyper-V模擬計算機系統,但JVM僅在受支持的平臺上提供Java字節碼的執行(和優化)。
您的第一段讓我想起了前幾天我讀到的一個問題,即管理程序如何誘使操作系統認爲大多數代碼是直接運行的(以防止操作系統修改)。好答案。實際上,當我說「一個實際的VM坐在操作系統和應用程序之間的特定環境中」時,我的意思是JVM在OS上運行。這可能是它如何知道它直接我猜... – dotnetdev 2010-11-25 21:49:06