表达式引擎JSEL介绍

14年前
JSEL是一款非常简单,高效的表达式引擎。
说他简单:因为他带上标准ECMA函数库、Lite模板执行环境后,jar也只有90k;除common-logging外,再无其他依赖。
说他高效:因为据目前的测试数据,他的性能是同类产品中最高的一个。
Ognl/MVEL/Aviator/JSEL四款引擎的对比

JSEL的具体特点如下: 

基于ECMA262标准的子集
JSEL是一个兼容 JavaScript 运算规则的简单的表达式解释引擎。
支持ECMA标准的运算符、函数库并内置了JSON支持。
基本语法是JavaScript的一个子集,基本语法有良好群众基础。

一个可以完全自定义的表达式系统
全新运算符支持,运算符别名,优先级控制,内置对象设置,等等,一切皆有可能。你完全可以在JSEL基础上DIY一套适合你自己的表达式系统。
详情可参考:http://code.google.com/p/lite/wiki/JSELExtension

执行效率远高于同类
其实,本人在开发过程中,并没有太注重效率,甚至为保持与JavaScript的兼容性,我不得不采用影响性能的设计。
然而,发布出来后,一做性能测试,反成了意外的惊喜。
我将另外撰文列出性能对比的详细数据,精彩稍后继续,不要离开^_^

内置功能强大的JSON解释支持
因为JSEL本身是基于JavaScript规则的,JSON本身就是JavaScript功能的子集,那么JSEL自然也就是一个天然的 JSON工具,此外,表达式的编译,本身就继承了JSON解析的功能,而且,我们也吧JSON支持的功能提出为独立的模块,相比官方的JSON解 析,JSEL的JSON功能更简单,更有独到的优点【稍后继续补充】

这里也有少许介绍:http://code.google.com/p/lite/wiki/JSON
补充:常见表达式引擎执行性能比较:http://www.javaeye.com/topic/732354

不仅是一个表达式
此外JSEL还提供了一些常用的工具支持,如命令行解析器,这是一个在表达式基础上建立起来的功能强大的命令行分析程序,如果你想编写一些基于命令行的工具程序,那么JSEL绝对是您最棒的助手。

该工具的基本用法简介:http://code.google.com/p/lite/wiki/CPEL

背后是一个空前强大的模板系统
JSEL并不是一个为了表达式而编写的表达式引擎,他本来只是Lite模板的一个基本功能,目前Lite模板系统正在做全面重构。这里就先留个悬念吧。以后你会知道的^_^

------------------------------
JSEL基于LGPL开源协议发布,(LiteRT-yyMMdd.jar,与Lite模板运行环境一起打包发布,不足100k),你可以从如下地址下载,并将其功能集成到你的系统中。
http://code.google.com/p/lite/downloads/list