做Java Web开发的朋友们,一定都有过这样的切身体验:
把某个页面、某个类中的方法修改后,重启了应用服务器Tomcat。
把某个类中选定方法的参数类型,个数做了修改,需要重启Tomcat
增加了一个方法,新声明了一个字段,需要重启Tomcat。
于是,开发的工作中大量的时间用在了等待应用服务器重启上。对于加载大量第三方jar包的应用,需要的时间则更长,可能一袋烟的功夫,应用才刚刚启动完成,甚至才启动了一半,等待,成了Java Web开发者的痛。
能找到一款不用重启,修改后就能立即生效的应用服务器,一直都是每个Java Web 开发者的梦想。
如果能像动态脚本语言一样,修改后立即生效,那生活该多么美好啊!
为此,经过多方探查,了解到了这样一款神器,基本满足我们上面的要求,最重要的,还是免费的。免费的 。免费的 。 重要的事情说三遍。
小兄弟,我看你天赋异禀,骨骼惊奇,特推荐给你。
下面,我们一起来认识一下这款神器吧。
这款神器,叫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本质上是需要直接替换我们已经安装的JDK中的jvm.dll文件。增加DCE VM支持后,对于class的修改支持以下类型:
修改方法体
修改方法的签名,包含方法名,传入的参数类型,顺序等。
增加方法
删除方法
为了使用以上我,我们需要先安装Dcevm。
-
先在github上下载其release版
地址为:https://github.com/dcevm/dcevm。 -
下载后是一个jar文件,使用java -jar命令,安装。
安装时,会将本地已经安装过的JDK都列出来,选择要替换的JDK,其会自动先将jvm.dll备份后,再替换目标目录的文件。
-
选择你喜欢的IDE,在debug模式下,如果修改了类文件,重新请求,修改已经生效啦。
-
快上手试试吧。别忘了分享给你的朋友啊!
快转发分享给你的朋友吧,好东西,一起分享。无兄弟,不Coding。
网友评论