1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

新闻 ASMSupport 0.4.2 发布,Java 字节码操作 下载

本帖由 漂亮的石头2015-05-18 发布。版面名称:软件资讯

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    486,331
    赞:
    46
    ASMSupport是一个字节码操作类库, 他使得程序员更简单的能够在运行时动态修改和创建类. 该框架是基于asm开发的, 但是不同于直接使用asm的是,它避免了繁杂的jvm指令,以及对栈和局部变量的操作。

    变更

    1. 项目结构模块化

    将项目拆分成如下模块

    模块描述依赖
    asmsupport-thrid这个模块的包含了asmsupport使用的第三方依赖包的源码,这些源码在asmsupport中都重新定义了命名空间,这样的好处就是实现零依赖,同时在开发过程中避免了因为使用asmsupport而产生包冲突NONE
    asmsupport-standard这个模块是asmsupport的标准,可以基于这个api标准完成一个新的asmsupport的实现asmsupport-thrid
    asmsupport-core这个模块是asmsupport-standard的一个核心实现asmsupport-standard
    asmsupport-client这个模块是对asmsupport-core的一个高层封装,实现了很多简便的方式,比如链式调用,同时也实现了asmsupport-standard标准.asmsupport-core
    asmsupport-issues这个模块包含了所以asmsupport以往的issue的测试类,这个包的作用可以在后续开发中确保运行’maven test’的时候同一问题不再出现。asmsupport-client
    asmsupport-sample这个模块包含了一些asmsupport的实例, 比如动态代理,json序列化等等.asmsupport-client

    拆分模块主要做作用就是标准化接口,后续能够针对统一的接口实现不同版本的封装,逐步依赖使得结构更清晰,作为使用者可直接引用core或者client模块。

    2. 支持方法的链式调用


    java代码:

    String message = new StringBuilder().append("Hello ASMSupport")

    老版本:



    Var message = var("message", StringBuilder.class, call(new_(StringBuilder.class), "append", val("Hello, ASMSupport")))

    新版本:

    Var message = _new(StringBuilder.class).call("append", val("Hello, ASMSupport")).asVar("message", StringBuilder.class)

    新版本同样支持老版本的方式。

    3. 底层支持jls 4.10支持

    4. 添加部分接口

    5. 修复Bug



    Maven坐标

    <dependency>
    <groupId>cn.wensiqun</groupId>
    <artifactId>asmsupport-core</artifactId>
    <version>0.4.2</version>
    </dependency>

    或者

    <dependency>
    <groupId>cn.wensiqun</groupId>
    <artifactId>asmsupport-client</artifactId>
    <version>0.4.2</version>
    </dependency>

    这两个依赖对应的是asmsupport的两种实现方式,建议使用asmsupport-client
    ASMSupport 0.4.2 发布,Java 字节码操作下载地址
     
正在加载...