跳至主要內容
"AviatorScript ClassDefiner源码解析"

"AviatorScript ClassDefiner源码解析"

在AviatorScript的内部实现机制中,需要将AviatorScript脚本翻译为可执行的java代码,所以会设计到「类的动态生成」和「类的加载」这2个功能。 而其中关于「类的加载」这部分的功能是在com.googlecode.aviator.code.asm.ClassDefiner中实现的, 在ASMCodeGenerator中通过下面的方式来使用:


xkrivzooh大约 5 分钟postAviatorScript
AviatorScript编译执行流程

AviatorScript编译执行流程

本篇文章通过AviatorScript工程自带的一个示例,来简单说明一下AviatorScript的执行流程:

  • 初始化Aviator的核心数据结构
  • 读取AviatorScript脚本内容,做语法树解析,并通过ASM翻译为java字节码,然后通过classLoader做类加载,构建Expression实例。
  • 通过触发Exception#execute方法来触发脚本执行。

xkrivzooh大约 8 分钟postAviatorScript
打赏
给作者赏一杯咖啡吧
您的支持将是我继续更新下去的动力
微信微信
支付宝支付宝