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