java java虛擬機是用什么語言編寫的?它的原理誰能通俗的講出來嗎?
java虛擬機是用什么語言編寫的?它的原理誰能通俗的講出來嗎?Java虛擬機的功能是執(zhí)行Java字節(jié)碼,其編碼實現(xiàn)是一個死循環(huán)。每個循環(huán)都是獲取字節(jié)碼并執(zhí)行字節(jié)碼的過程,因此與其他程序沒有本質(zhì)區(qū)別。主
java虛擬機是用什么語言編寫的?它的原理誰能通俗的講出來嗎?
Java虛擬機的功能是執(zhí)行Java字節(jié)碼,其編碼實現(xiàn)是一個死循環(huán)。每個循環(huán)都是獲取字節(jié)碼并執(zhí)行字節(jié)碼的過程,因此與其他程序沒有本質(zhì)區(qū)別。主流的JavaVM大多是用C語言實現(xiàn)的,然后用匯編語言輔助實現(xiàn),用Java實現(xiàn)JavaVM的情況有一些,但不多。
下面是使用C語言在智能設備中實現(xiàn)虛擬機的一個片段。
此代碼是短加法字節(jié)碼的實現(xiàn)。
這段代碼只是獲取字節(jié)碼并執(zhí)行它。你認為JavaVM就是這樣嗎。
為了優(yōu)化虛擬機的效率,很多人選擇用匯編的方式重寫執(zhí)行頻率高的代碼。
小結是C語言實現(xiàn)的許多,將與匯編結合起來作為輔助工具。有其他語言,但不是主流。
Java源程序如何變成Java字節(jié)碼?
默認情況下,編譯器會將java文件轉換為字節(jié)碼,以便計算機能夠理解它,并手動使用CMD javacxxxx.java文件編譯
Java在執(zhí)行前被編譯成字節(jié)碼。Java虛擬機是字節(jié)碼運行的環(huán)境。通過Java虛擬機,可以實現(xiàn)平臺無關性,Java解釋器將字節(jié)碼解釋為操作系統(tǒng)可以理解的原始執(zhí)行。Java解釋器是虛擬機的實現(xiàn)。