arm架構(gòu) Java代碼的靜態(tài)編譯和動(dòng)態(tài)編譯中的問(wèn)題是什么?
Java代碼的靜態(tài)編譯和動(dòng)態(tài)編譯中的問(wèn)題是什么?Java代碼通常被靜態(tài)編譯成字節(jié)碼,由相應(yīng)平臺(tái)的JVM加載和執(zhí)行。靜態(tài)編譯無(wú)法動(dòng)態(tài)擴(kuò)展函數(shù)。動(dòng)態(tài)編譯可以通過(guò)兩種方式實(shí)現(xiàn):從源代碼編譯、調(diào)用java編譯
Java代碼的靜態(tài)編譯和動(dòng)態(tài)編譯中的問(wèn)題是什么?
Java代碼通常被靜態(tài)編譯成字節(jié)碼,由相應(yīng)平臺(tái)的JVM加載和執(zhí)行。靜態(tài)編譯無(wú)法動(dòng)態(tài)擴(kuò)展函數(shù)。動(dòng)態(tài)編譯可以通過(guò)兩種方式實(shí)現(xiàn):從源代碼編譯、調(diào)用java編譯器和在JDK(而不是JRE)上運(yùn)行。動(dòng)態(tài)字節(jié)碼生成技術(shù)(如cglib、ASM)創(chuàng)建類。動(dòng)態(tài)編譯可以簡(jiǎn)化代碼,增強(qiáng)類功能,但也帶來(lái)了代碼的復(fù)雜性,不易在線維護(hù)。
cglib和asm是什么?
Cglib(代碼生成庫(kù))是一個(gè)開(kāi)源項(xiàng)目!它是一個(gè)功能強(qiáng)大、高性能、高質(zhì)量的代碼生成類庫(kù),可以在運(yùn)行時(shí)擴(kuò)展Java類和實(shí)現(xiàn)Java接口。Hibernate用它來(lái)實(shí)現(xiàn)Po(persistent object persistent object)字節(jié)碼的動(dòng)態(tài)生成。ASM也是匯編語(yǔ)言源程序的擴(kuò)展。匯編程序也稱為ASM。匯編語(yǔ)言是一種面向機(jī)器的程序設(shè)計(jì)語(yǔ)言。匯編語(yǔ)言是一種功能強(qiáng)大的程序設(shè)計(jì)語(yǔ)言。它也是一種利用計(jì)算機(jī)硬件的所有特性直接控制硬件的語(yǔ)言。在匯編語(yǔ)言中,操作碼由memoni代替,地址碼由符號(hào)或標(biāo)簽代替。這樣,機(jī)器語(yǔ)言的二進(jìn)制代碼就被符號(hào)所取代,機(jī)器語(yǔ)言就變成了匯編語(yǔ)言。因此,匯編語(yǔ)言也被稱為符號(hào)語(yǔ)言。用匯編語(yǔ)言編寫的程序不能被機(jī)器直接識(shí)別。程序是用來(lái)把匯編語(yǔ)言翻譯成機(jī)器語(yǔ)言的。這種翻譯程序稱為匯編程序。匯編程序是系統(tǒng)軟件中的語(yǔ)言處理系統(tǒng)軟件。匯編程序?qū)R編語(yǔ)言翻譯成機(jī)器語(yǔ)言的過(guò)程稱為匯編。匯編語(yǔ)言比機(jī)器語(yǔ)言更易于讀、寫、調(diào)試和修改,具有機(jī)器語(yǔ)言的所有優(yōu)點(diǎn)。然而,在編寫復(fù)雜程序時(shí),高級(jí)語(yǔ)言的代碼量比較大,匯編語(yǔ)言依賴于特定的處理器體系結(jié)構(gòu),不能直接在不同的處理器體系結(jié)構(gòu)之間移植。