做Java Web開發(fā)的朋友們亩钟,一定都有過這樣的切身體驗:
把某個頁面、某個類中的方法修改后鳖轰,重啟了應(yīng)用服務(wù)器Tomcat清酥。
把某個類中選定方法的參數(shù)類型,個數(shù)做了修改蕴侣,需要重啟Tomcat
增加了一個方法焰轻,新聲明了一個字段,需要重啟Tomcat昆雀。
于是辱志,開發(fā)的工作中大量的時間用在了等待應(yīng)用服務(wù)器重啟上蝠筑。對于加載大量第三方j(luò)ar包的應(yīng)用,需要的時間則更長揩懒,可能一袋煙的功夫什乙,應(yīng)用才剛剛啟動完成,甚至才啟動了一半已球,等待臣镣,成了Java Web開發(fā)者的痛。
能找到一款不用重啟智亮,修改后就能立即生效的應(yīng)用服務(wù)器退疫,一直都是每個Java Web 開發(fā)者的夢想。
如果能像動態(tài)腳本語言一樣鸽素,修改后立即生效褒繁,那生活該多么美好啊馍忽!
為此棒坏,經(jīng)過多方探查,了解到了這樣一款神器遭笋,基本滿足我們上面的要求坝冕,最重要的,還是免費的瓦呼。免費的 喂窟。免費的 。 重要的事情說三遍央串。
小兄弟磨澡,我看你天賦異稟,骨骼驚奇质和,特推薦給你稳摄。
下面,我們一起來認(rèn)識一下這款神器吧饲宿。
這款神器厦酬,叫DCE VM。官方的介紹是這樣的:
The Dynamic Code Evolution Virtual Machine (DCE VM) is a modification of the Java HotSpot(TM) VM that allows unlimited redefinition of loaded classes at runtime. The current hotswapping mechanism of the HotSpot(TM) VM allows only changing method bodies. Our enhanced VM allows adding and removing fields and methods as well as changes to the super types of a class.
可見瘫想,它是基于HotSpot做的修改仗阅。修改前的HotSpot只能支持修改方法體。而DCE VM本質(zhì)上是需要直接替換我們已經(jīng)安裝的JDK中的jvm.dll文件国夜。增加DCE VM支持后减噪,對于class的修改支持以下類型:
修改方法體
修改方法的簽名,包含方法名,傳入的參數(shù)類型旋廷,順序等鸠按。
增加方法
刪除方法
為了使用以上我礼搁,我們需要先安裝Dcevm饶碘。
先在github上下載其release版
地址為:https://github.com/dcevm/dcevm。-
下載后是一個jar文件馒吴,使用java -jar命令扎运,安裝。
安裝時饮戳,會將本地已經(jīng)安裝過的JDK都列出來豪治,選擇要替換的JDK,其會自動先將jvm.dll備份后扯罐,再替換目標(biāo)目錄的文件负拟。
選擇你喜歡的IDE,在debug模式下歹河,如果修改了類文件掩浙,重新請求,修改已經(jīng)生效啦秸歧。
快上手試試吧厨姚。別忘了分享給你的朋友啊键菱!
快轉(zhuǎn)發(fā)分享給你的朋友吧谬墙,好東西,一起分享经备。無兄弟拭抬,不Coding。