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