java動(dòng)態(tài)加載類框架 Java代碼的靜態(tài)編譯和動(dòng)態(tài)編譯中的問題是什么?
Java代碼的靜態(tài)編譯和動(dòng)態(tài)編譯中的問題是什么?Java代碼通常被靜態(tài)編譯成字節(jié)碼,由相應(yīng)平臺(tái)的JVM加載和執(zhí)行。靜態(tài)編譯無法動(dòng)態(tài)擴(kuò)展函數(shù)。動(dòng)態(tài)編譯可以通過兩種方式實(shí)現(xiàn):從源代碼編譯、調(diào)用java編譯
Java代碼的靜態(tài)編譯和動(dòng)態(tài)編譯中的問題是什么?
Java代碼通常被靜態(tài)編譯成字節(jié)碼,由相應(yīng)平臺(tái)的JVM加載和執(zhí)行。靜態(tài)編譯無法動(dòng)態(tài)擴(kuò)展函數(shù)。動(dòng)態(tài)編譯可以通過兩種方式實(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)類功能,但也帶來了代碼的復(fù)雜性,不易在線維護(hù)。
java程序想動(dòng)態(tài)添加一段代碼來改變類的行為,有什么好的辦法?
我不知道如何添加動(dòng)態(tài)代碼。一般來說,是通過Java多態(tài)性來實(shí)現(xiàn)代碼的動(dòng)態(tài)變化,停留在預(yù)編譯階段。另一種動(dòng)態(tài)添加是熱部署,它處于程序的運(yùn)行階段,涉及到類加載機(jī)制的知識(shí)。