java開源框架有哪些 java虛擬機(jī)是用什么語(yǔ)言編寫的?它的原理誰(shuí)能通俗的講出來(lái)嗎?
java虛擬機(jī)是用什么語(yǔ)言編寫的?它的原理誰(shuí)能通俗的講出來(lái)嗎?Java虛擬機(jī)的功能是執(zhí)行Java字節(jié)碼,其編碼實(shí)現(xiàn)是一個(gè)死循環(huán)。每個(gè)循環(huán)都是獲取字節(jié)碼并執(zhí)行字節(jié)碼的過(guò)程,因此與其他程序沒有本質(zhì)區(qū)別。主
java虛擬機(jī)是用什么語(yǔ)言編寫的?它的原理誰(shuí)能通俗的講出來(lái)嗎?
Java虛擬機(jī)的功能是執(zhí)行Java字節(jié)碼,其編碼實(shí)現(xiàn)是一個(gè)死循環(huán)。每個(gè)循環(huán)都是獲取字節(jié)碼并執(zhí)行字節(jié)碼的過(guò)程,因此與其他程序沒有本質(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ī)的效率,很多人選擇用匯編的方式重寫執(zhí)行頻率高的代碼。
小結(jié)是C語(yǔ)言實(shí)現(xiàn)的許多,將與匯編結(jié)合起來(lái)作為輔助工具。有其他語(yǔ)言,但不是主流。
如何看待龍芯對(duì)外公開的LoongArch指令集?
感謝您的閱讀!披露也是一種策略。當(dāng)我們糾結(jié)于是否有獨(dú)立的指令集,當(dāng)我們受到arm、risc-v、x86等指令集成功的影響,卻沒有自己的指令集時(shí),我們真的很擔(dān)心如何在芯片設(shè)計(jì)領(lǐng)域一步步取得突破。
麒麟處理器也使用arm指令集。換句話說(shuō),現(xiàn)在大多數(shù)手機(jī)處理器都使用arm架構(gòu)。這種情況會(huì)讓一些人認(rèn)為麒麟處理器不是一個(gè)獨(dú)立的芯片,也會(huì)有人堅(jiān)持認(rèn)為目前中國(guó)沒有獨(dú)立的芯片。
其主要特點(diǎn)是兼容性。它可以與具有MIPs、x86、arm和risc-v指令集的Linux程序兼容。它最大的特點(diǎn)是將組成一個(gè)指令系統(tǒng)聯(lián)盟,其成員可以免費(fèi)使用龍拱指令集。我認(rèn)為這種披露的好處是顯而易見的。一方面,它可以使更多的人使用龍芯的龍芯指令集;另一方面,它也會(huì)對(duì)Intel/arm產(chǎn)生一定的影響。
而且,這種自由開放的指令集的優(yōu)勢(shì)不僅可以突出龍芯指令集的特點(diǎn),還可以通過(guò)開源增加龍芯的生態(tài)建設(shè),使龍芯獨(dú)立,不會(huì)受到美國(guó)類似的限制和制裁。在未來(lái),它有可能成為x86之外的CISC復(fù)合指令,也可以保證中文芯片的獨(dú)立性。
如果有配套的編譯器,JAVA語(yǔ)言可不可以編寫單片機(jī)程序呢?
通常,Java在MCU中的應(yīng)用并不廣泛,通常使用C或C。但是,有些微控制器可以使用Java。這樣的微控制器需要集成JVM,比如freerts來(lái)使用Java。目前,以ARM為核心的單片機(jī)得到了廣泛的應(yīng)用。Arm不僅可以支持Java,還可以運(yùn)行多種操作系統(tǒng)。
Java的起源用于電視、電話、鬧鐘、烤面包機(jī)等家用電器的控制和通訊。但它誕生得太早,后來(lái)在發(fā)展中改變了其主要應(yīng)用方向。
哪些編程語(yǔ)言的設(shè)計(jì)中使用了虛擬機(jī)和指令集?
這取決于您如何定義虛擬機(jī)。例如,Java被稱為JVM,也被稱為Java虛擬機(jī)。但是。Net稱為CLR,稱為公共語(yǔ)言運(yùn)行時(shí)。它是跨語(yǔ)言的。這是兩個(gè)常見的問(wèn)題。還有很多其他的。Golang也有一個(gè)運(yùn)行時(shí),但它非常小,功能很少。似乎它只提供垃圾收集和反射。此外,虛擬機(jī)和指令集不在同一級(jí)別。虛擬機(jī)運(yùn)行字節(jié)碼或中間代碼,目標(biāo)平臺(tái)是虛擬機(jī),而不是特定的處理器。因此,討論指令集是沒有意義的。