提高索引量的方法,北京核心词优化市场,广告营销方式有哪几种,wordpress信息发布字节码技术应用 字节码技术的应用场景包括但不限于AOP#xff0c;动态生成代码#xff0c;接下来讲一下字节码技术相关的第三方类库#xff0c;第三方框架的讲解是为了帮助大家了解字节码技术的应用方向#xff0c;文档并没有对框架机制进行详细分析#xff0c;有兴趣的可… 字节码技术应用 字节码技术的应用场景包括但不限于AOP动态生成代码接下来讲一下字节码技术相关的第三方类库第三方框架的讲解是为了帮助大家了解字节码技术的应用方向文档并没有对框架机制进行详细分析有兴趣的可以去了解相关框架实现原理和架构也可以后续为大家奉上相关详细讲解。
ASM ASM 是一个 Java 字节码操控框架它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件也可以在类被加载入 Java 虚拟机之前动态改变类行为。
说白了ASM可以在不修改Java源码文件的情况下直接对Class文件进行修改改变或增强原有类功能。
在熟悉了字节码原理的情况下理解动态修改字节码技术会更加容易
接下来我们只针对ASM框架中几个主要类进行分析并举个栗子帮助大家理解。
主要类介绍
ClassVisitor
提供各种对字节码操作的方法包括对属性、方法、注解等内容的修改
ClassWriter
主要功能就是记录所有字节码相关字段并提供转换为字节数组的方法
ClassReader Opcodes
ASM除了可以动态生成新的Class文件还可以修改原有Class文件的功能或者在原Class文件新增方法字段等这里不再举例子有兴趣的可以自己研究一下。不过大家已经发现使用ASM动态修改Class文件难度还是有的需要使用者对JVM指令、Class格式相当熟悉
除了ASM还有其他第三方工具也提供了对字节码的动态修改包括CGLib,Javassisit,AspectJ等而这些框架相比于ASM则是将JVM指令级别的编码封装起来让使用者直接使用Java代码编辑使用更加方便。
引申 既然JVM运行时识别的只是.class文件而文件格式我们也了解那是不是只要我们能够正确生成.class文件就可以直接运行甚至可以不用Java语言
答案大家肯定都知道了当然可以。Kotlin,Scala,Groovy,Jython,JRuby…这些都是基于JVM的编程语言。
那如果我们想自己实现一款基于JVM的开发语言怎么搞
定义语义静态动态强类型弱类型… 定义语法关键字if,else,break,return… 定义代码编译器如何将自己的代码编译成.class 知识来源
【基础】什么是字节码作用是什么_哔哩哔哩_bilibili
字节码详解_封何的博客-CSDN博客