虛擬機器的好處相當明顯,技術瓶頸也一一被克服,所以未來將越來越蓬勃發展,許多原本是編譯式或解譯式的語言,都開始採用虛擬機器(例如Erlang)。 虛擬機器(Virtual Machine,VM)由來已久,早在1972年,IBM就推出所謂的VM/370產品;1973年Pascal語言就有所謂的P-code Machine(P-code的意思是Pseudo-code或Pascal-code)。但真正打響虛擬機器名號,讓虛擬機器廣為人知者,就要歸功於1990年代中期開始興起的Java了。
總而言之,虛擬機器就是「虛假」的機器,我們為這個想像中的機器定義好機器語言,寫一個「特殊程式」來解讀並執行此機器語言,這個特殊程式就是「虛擬機器」。最陽春的虛擬機器本質上就是「解譯器」。
一般人不會想直接用虛擬機器的機器語言寫程式,而是會用更高階的語言撰寫程式,再利用編譯器將高階語言編譯成虛擬機器語言。因此虛擬機器通常伴隨著編譯器而來,例如JVM的javac編譯器以及.NET CLR的csc編譯器。
高階語言如Java或C#,要能在作業系統和硬體上執行,其編譯器必須先將高階語言「編譯」成虛擬機器語言,然後虛擬機器再將此虛擬機器語言「解譯」成實際的機器語言。由於需要同時用到編譯器與解譯器,所以我們稱虛擬機器運作的方式是混合式(hybrid),虛擬機器語言則為「中間語言」或bytecode。
全文>>
沒有留言:
張貼留言