美文网首页
使用asm动态生成class文件

使用asm动态生成class文件

作者: tracy_668 | 来源:发表于2018-03-30 11:33 被阅读152次

概述

       我们都知道jvm运行的原材料是class文件,而class文件基本上都是由java源文件通过javac编译得到,但有时我们在程序运行前并不知道要使用什么类,只有在运行时根据当时的程序执行状态才知道要运行什么类。比如jdk中的动态代理它能使用一套api代理所有符合条件的类,这这些代理类都是在程序运行过程中动态生成的。那么能够在程序运行期间直接生成class文件?(note: jdk的动态代理还是根据源文件编译,只不过源文件也是动态生成),答案是肯定的,有一种叫asm的库可以直接生成class文件,cglib就是基于asm框架。

     asm中的每个api都和class文件格式中的特定部分相吻合。下面通过HelloWorld来说明。

     asm库中的每个api都是使用对应class文件中的某部分信息,如果对class文件格式比较熟悉,使用起来会更方便。asm是cglib动态代理的基础, 连接asm是如何生成class文件的有助于理解cglib的原理。

相关文章

  • 使用asm动态生成class文件

    概述 我们都知道jvm运行的原材料是class文件,而class文件基本上都是由java源文件通过javac...

  • 使用ASM动态生成class文件

      在java语言中,Java文件在编译时会将java文件编译成.class的字节码文件。通常我们在写代码时只涉及...

  • class(二)使用ASM动态生成class文件

    前言 JVM在运行时,加载并执行class文件,这个class文件是由编写好的java源文件经过javac编译而得...

  • Android ASM快速入门

    ASM介绍 ASM是一个字节码操作库,它可以直接修改已经存在的class文件或者生成class文件。ASM提供了一...

  • ASM简介(六)

    TreeAPI Class ASM中修改生成class主要依赖ClassNode类 生成class时我们只需构造对...

  • JVM 字节码操作 ASM 框架简单讲解

    什么是 ASM ? ASM 是一款直接操作字节码(即 class 文件)的框架,可以都已生成好的字节码进行改动或者...

  • 57 - ASM之MethodVisitor回顾

    使用ASM,可以生成一个.class文件当中各个部分的内容。 在这里,我们只关心方法的部分: 对于方法头的部分,我...

  • Lombok: 让你写 Java代码像C#一样爽

    作用:帮使用者提高编码效率,减少重复与冗余的代码原理:ASM 动态修改class文件 我曾经是一名 .Net 开发...

  • ASM笔记

    1. 准备工作 idea安装插件:ASM ByteCode Outline,用于将class生成ASM相关代码,供...

  • 16 - MethodVisitor生成构造方法

    先回顾下asm能做什么 在当前阶段,我们关注如何生成代码 ()方法 在.class文件中,构造方法的名...

网友评论

      本文标题:使用asm动态生成class文件

      本文链接:https://www.haomeiwen.com/subject/bpgbcftx.html