java入門(mén)編程 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ǔ)言,但不是主流。
用C#、C 、Java能編寫(xiě)出Adobe等級(jí)的行業(yè)軟件嗎?
Adobe軟件工具的核心是算法,它可以在所有三種語(yǔ)言中很好地實(shí)現(xiàn)。
上世紀(jì)90年代初,我做了一個(gè)骨折圖像處理的基金項(xiàng)目,它有很多類(lèi)似adobe的功能。當(dāng)時(shí),還沒(méi)有用C語(yǔ)言編寫(xiě)的CSharp、Java語(yǔ)言或Adobe軟件,更不用說(shuō)這些面向?qū)ο蟮恼Z(yǔ)言了。
用C語(yǔ)言編寫(xiě),相當(dāng)于手工制作。擦除一行需要逐位對(duì)每個(gè)點(diǎn)進(jìn)行異或處理。與C#不同,可以刪除對(duì)象。對(duì)于圖像去噪、去毛刺、二值化和特征提取,需要編寫(xiě)相應(yīng)的算法。例如插值算法用于邊緣增強(qiáng)和平滑,圓形鄰域法用于模式匹配,現(xiàn)在很多算法都有函數(shù)庫(kù),可以通過(guò)接口調(diào)用函數(shù)庫(kù)。它簡(jiǎn)單得多,使用C#、C和Java就足夠了。