原理
Groovy
- groovy基于JVM运行。
- 编译时:将源文件编译成class文件后,用java的classLoader加载;
- 运行时:直接用groovy classLoader加载
QLExpress
- QLExpress将文本解析成AST,用java对象表达后执行。
特点
Groovy
- 优点
- 兼容性强,上手成本低。和java基本无缝兼容,熟悉java的同学上手无压力。
- 发展历史悠久。功能强大。
- 缺点
- 使用疏忽时容易产生一系列OOM问题。
QLExpress
- 优点
- 线程安全,引擎运算过程中的产生的临时变量都是threadlocal类型。
- 高效执行,比较耗时的脚本编译过程可以缓存在本地机器,运行时的临时变量创建采用了缓冲池的技术,和groovy性能相当。
- 弱类型脚本语言,和groovy,javascript语法类似,虽然比强类型脚本语言要慢一些,但是使业务的灵活度大大增强。
- 安全控制,可以通过设置相关运行参数,预防死循环、高危系统api调用等情况。
- 代码精简,依赖最小,250k的jar包适合所有java的运行环境,在android系统的低端pos机也得到广泛运用。
- 扩展性强。可以导入jvm中的类,或者自定义扩展操作符。
例子
相关文档
- Groovy 官网
- alibaba/QLExpress github
- QLExpress代码解读,运行原理解析
- java脚本引擎的设计原理浅析
- Groovy与Java集成常见的坑
- Groovy灵活,但请小心–记一次FullGC分析