HotswapAgent:支持无限次重定义运行时类与资源

 

hotswapagent

Java运行时无限制的类和资源的重定义

HotSwapAgent 项目的主要目的是避免臭名昭著的开发周期,即“更改->重启+等待->检测”。在开发期间保存并重新加载是标准的流程,而且其他语言(包括C#)也有这种流程。

功能特性

  • 扩展的 Hotswap可以更改方法体,增加或重命名某个方法和字段等。HotswapAgent无法做到的是层级改动(比如更改超类或者是移除接口)。
  • 你可以在集成桌面开发环境的debug模式下,通过使用标准的Java Hotswap来重新加载被更改的类。
  • 也可以在编辑完成后,通过设置Hotswap的自动属性(-XXaltjvm=dcevm -javaagent:PATH_TO_AGENT\hotswap-agent.jar=autoHotswap=true)来重新加载被更改的类。该设置甚至不用重启就可以在产品系统上完成重新加载。
  • 自动配置 – 在运行时的Java应用程序中登记过的所有本地类和资源都被监控,以便重新加载(在本地文件系统中的所有文件,但不包括JAR包中的文件)。
  • 额外的classpath – 如果某个运行时类在依赖的JAR包中,那么 需要更改该运行时类?使用额外的classpath属性可以添加任何目录作为classpath,以便监测这些路径中的类文件。
  • 在作出修改后要重新加载资源 – 应用服务器通常重新加载来自网页应用目录中的资源。但是其他的资源(比如src/main/resources)是如何重载的?使用watchResource属性可以添加任何路径来监测资源的改动。
  • 支持框架 – 通过插件系统,许多框架都是被支持的。新的插件可以被轻松的添加。
  • 快速 – 在插件被初始化之前,它是不会消耗任何资源或是让应用变慢的(阅读运行时的开销,你可以了解更多这方面的信息)。

 

 

下载

下载页面提供了JAR文件及源代码下载。

 

快速上手

安装

  1. 下载latest release of DCEVM Java patch,并启动安装程序(比如,java -jar installer-light.jar)。目前你需要为Java主版本(7/8)选择合适的安装程序。
  2. 在你的硬盘上选择一个安装java的目录,并点击“Install DCEVM as altjvm”按钮。1.7以上的Java版本都是支持的。
  3. 下载latest release of Hotswap agent jar,解压hotswap-agent.jar,解压内容可以放在你的硬盘上的任何位置(例如,C:\java\hotswap-agent.jar)。

运行你的应用程序

  1. 添加接下来的命令行java属性:-XXaltjvm=dcevm -javaagent:PATH_TO_AGENT\hotswap-agent.jar(你需要用实际的路径替换PATH_TO_AGENT)。比如java路径,那么就是-XXaltjvm=dcevm -javaagent:c:\java\hotswap-agent.jar。想要了解更多的IDE具体的设置指南,可以查看IntelliJ IDEA 和 Netbeans 论坛上的线索。如果你的应用已经在运行了,你仍可以使用示例code snippet来附加agent jar包。
  2. (可做可不做)在你的资源路径中创建一个名为”hotswap-agent.properties”的文件,想要查看可用的属性和默认值:可以参阅https://github.com/HotswapProjects/HotswapAgent/blob/master/hotswap-agent-core/src/main/resources/hotswap-agent.properties
  3. 在debug模式下启动应用程序,并参考一下来检测代理和插件是否被正确初始化:
  4. 保存某个被修改了的资源,和/或 使用你IDE的HotSwap特性来重新加载被修改了的内容。

配置

做完那些基本配置后,就可以从classpath着手重新加载类和资源了,该classpath已被运行时应用程序(classloader类加载器)所知。如果你需要一个不同的配置,可以添加hotswap-agent.properties文件到classpath的根路径(比如,src/main/resources/hotswap-agent.properties)。

可用属性和默认值的详细文档可以在agent properties file中找到。

 

Hotswap agent命令行参数

命令行参数的完整语法是:

Hotswap agent 接受如下的参数:

  • autoHotswap=true – 监测所有随时可能修改的类文件,并在运行着的应用程序中自动热交换 类(而不是从你的IDE调试窗口运行热交换)。
  • disablePlugin=[pluginName] – 禁止一个插件.注意这个参数会完全禁止插件去加载(hotswap-agent.properties文件中的disablePlugin参数只会为类加载器禁用插件, 这两个参数的作用是相反的。你对每个插件重复使用这个参数可以达到禁止插件的目的)。

开发资源

使用许可

HotswapAgent遵循GPL-2.0开源协议发布。

 

开源地址:https://github.com/HotswapProjects/HotswapAgent

1 1 收藏

资源整理者简介:DDoers

简介还没来得及写 :) 个人主页 · 贡献了1个资源 · 1


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1435 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer