1 、工具介绍
String exp = “v>=10&&v<=2000&&v%10==0”;
在 js 中,能够直接运行 eval 得到结果, java 中也可以!
在 java 中运行执行这种字符串格式数学表达式的方法:
1、 自己写按照算法(逆波兰)一个解析程序。
2、 使用第三方的工具。
1.jakarta commons JEXL. : Apache 出品,必属精品。
2.Beanshell :动态语言,能够很好与 spring 集成。
3.Java Math Expression Parser jep
4.parse combinator jparsec
5.JFormula:http://www.japisoft.com/formula/
6.jeval:http://www.javagg.com/diary/67916522
7.jdk 6.0 的 script : java 中比较著名的 js 引擎 -mozilla 开源的 rhino ,通过动态语言的 eval 实现。
8.IK Expression :官方介绍: IK Expression 是一个开源的( OpenSource) ,可扩展的( Extensible ),基于 java 语言开发的一个超轻量级( Super lightweight )的公式化语言解析执行工具包。严重推荐 :文档很全,易用,如果有不懂的地方,可以直接去作者的 blog 用中文交流。 http://code.google.com/p/ik-expression/
协议: GNU
8.MVEL : 很好用,极为简单 ,和 BeanShell 一样有自己的交互式环境: MVEL Shell 。
使用教程:
http://mvel.codehaus.org/Integration+Guide+for+2.0
http://mvel.codehaus.org/Getting+Started+for+2.0
语法环境:
http://mvel.codehaus.org/Language+Guide+for+2.0
模板:
http://mvel.codehaus.org/MVEL+2.0+Templating+Guide
能够像 freemarker 、 velocity 一样工作,虽然不专业功能也够用了。
更新:
现在MVEL已经用到了google的MVC框架sitebricks中了,其中MVEL在sitebricks中地位类似ognl之于webwork。
sitebricks 见http://code.google.com/p/google-sitebricks/
协议: Apache 2.0 License
DEMO: ( IK Expression vs MVEL ):
IK Expression:
MVEL :
2、 应用场景
通过数学公式的形式,
1、 适用于常规业务系统条件的动态配置。
2、 工作流的流程配置