加速Java应用开发.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
加速Java应用开发

加速Java应用开发2—加速项目调试启动速度 本文介绍关于热部署/热替换。之前也有很多人介绍过这些知识,不过比较分散,我写此篇的目的是聚合它们。本文以HotSpot虚拟机为例。 上一篇Spring/Hibernate提升速度的文章《加速spring/hibernate应用调试时启动速度》,主要是通过一些技巧来提升启动速度,还是做不到如类的热部署/热替换。因此再写一篇关于热部署/热替换的文章。之前也有很多人介绍过这些知识,不过比较分散,我写此篇的目的是聚合它们。本文以HotSpot虚拟机为例。 首先让我们来看两个概念:热部署、热替换 热部署 即在容器运行过程中,重新加载类或重新加载整个项目。常见的解决方案就是使用自定义ClassLoader; 部分加载的示例:如JSP、Play框架; 重新加载整个项目的示例:如Tomcat、Jetty;默认都是定期检测class文件是否有修改,如果有,先卸载当前容器,再重新加载整个项目(reload)。 这种情况缺点很明显:只能重新装载整个类/整个项目,不能只替换类中的部分。 热替换 热替换相对于之前的热部署的优势就是可以替换如方法体、增删方法/字段等类内部局部替换,而不是整个类。常见的实现方式:HotSpot虚拟机的HotSwap、HotSwap补丁、 HotSwap 只能热替换方法体。只要在eclipse或idea等开发工具中开启debug模式即可使用。 HotSwap补丁 DCEVM 该补丁增强了HotSwap,可以增加、删除类字段、方法和改变类的父类。也必须在debug模式下调试。具体使用可以参考如下文章,在此就不重复了 HYPERLINK /team/jm/archives/641 \t _blank hotswap 用户手册 HYPERLINK /blog/experience_1368/dce-hot-swap-usage-and-problem-solution.html \t _self DCE使用的问题及其解决方法 我测试时使用的是jdk1.6.0_25,没有问题,不支持jdk1.6.0_26,且我测试jdk7_13和jdk7_21没成功。官网介绍说其是基于JDK7-b102编译的。估计我下的这两个版本不对。 java agent +?Instrumentation 1、Spring-Loaded SpringSource官网发布的,用在Grails 2中,允许:添加/修改/删除 方法/字段/构造器。类型/方法/字段/构造器上的注解也允许修改,且也可以新增/删除/修改enum类型的值。 使用方式: -javaagent:pathTo/springloaded-{VERSION}.jar?-noverify? 如在执行tomcat/jetty时的VM参数中指定如上配置即可。无需在debug模式下执行。如果使用的是如idea可以按Ctrl+Shift+F9编译当前类/Ctrl+F9编译所有更改的类。 2、Fakereplace? 类似于Spring-Loaded,具体可参考其官网: 它的好处是,支持一些框架: Seam 2 Weld?(基本集成) JSF Metawidget Hibernate?(实际是如果实体修改了,重启整个EMF,也不是很快) Resteasy 具体使用也是在VM参数中指定: -javaagent:/path/to/fakereplace.jar?? 可以到如下地址下载jar包,或自己编译 其提供了一些配置,如: -javaagent:/path/to/fakereplace.jar=packages=com.mycompany.myclasses,log=trace??? packages?需要热替换的包 log?可选,支持trace,debug,info,error index-file?fakereplace索引为的路径。Fakereplace在第一次运行后存储这个文件以加速启动 dump-dir 当热替换时,Dump类到这个目录,仅当开发Fakereplace时有用 port?Fakereplace监听的端口 它俩的实现很类似,Spring-Loaded使用了CGLIB来实现代理,FakeReplace使用了Javassist来实现的。 还有如Agent Smith,不过N久没维护了。?其实Play框架也是使用了Instrumentation,但是它是整个替换,所以没有归类过来。 以上的都有个缺点:如我在写spring项目时,无法动态加载如@RequestMapping配置,或动态加载配置文件。这些在强大的JRebel中都是支持的。 JRebel JRebel是我目前简单的最强大的热替换/热部署工具。但缺点是收费的,而且不

您可能关注的文档

文档评论(0)

dajia1qi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档