用JAVA实现一个自己的脚本引擎Jglue

本文介绍了作者出于对现有脚本引擎的不满,如语法不完善、缓存管理等问题,而决定开发JAVA脚本引擎Jglue。Jglue旨在提供更完善的语法、功能强大、使用灵活且执行效率高。文章详细阐述了脚本引擎的实现原理,包括编译型和解释型的区别,并提到Jglue的特点如兼容JS语法、高效的执行效率和可扩展性。目前,Jglue已开源在Gitee上,期待社区的反馈和建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么要实现这个脚本引擎(https://gitee.com/xukui911/jglue

规则引擎在现在的业务系统中,基本已经成为标准配置之一,大部分公司基本都是选择一款现有的比较著名的一些脚本或表达式引擎,在此之上构建自己的规则引擎产品。之前我们公司的系统也同样基于此方案进行设计和选型,我们选择的是阿里开源的qlExpress。通过一段时间的建设,此引擎也基本能满足公司的业务需求。但在整个过程中,也会发现此框架以及同类产品的一些不足。个人认为比较突出的问题包括以下几个方面

  1. 语法相对不完善

虽说现有的语法能解决90%的问题,但吹毛求疵还是有缺少,比如:

不支持异常处理(try{}catch{})

不支持switch原语

支持 a++,不支持++a以及a+=1

可以定义数组([]), 但不能定义对象({a: 1},也许有,但我没发现)

定义方法时,参数需要指定类型,不够灵活

函数出入参均不支持函数

函数名引用等同函数执行,(function a() {return 1;}; a与a()效果相同,均是1)

2、基于脚本内容缓存

多个规则间无法相互调用,对于原子规则无法复用(需二次开发实现)

修改规则其实就是新增规则,旧规则未提供下线API,继续占用缓存

基于以上遇到的一些问题、在项目过程中知识技能的不断成长、对脚本的实现原理更深入的了解,对技术不断探索的激情,遂尝试开发一款自己的脚本引擎。该引擎具备语法趋于完善、功能强大、使用灵活、执行效率相对高的特点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值