- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Aviator_Java_表达式引擎
简介
前⾔
最近项⽬业务中有关于价格计算的模块,项⽬⽤到这个东西,感觉很⽅便和灵活,特地看了⼀下官⽅⽂档。
官⽅⽂档地址如下:
参照博客地址:
软件简介
是⼀门⾼性能、轻量级寄宿于JVM之上的脚本语⾔。
AviatorScript
备注:版本5之前都叫,5版本重⼤升级改名,详情请看官⽅⽂档介绍。
AviatorAviatorScript
Aviator是⼀个⾼性能、轻量级的java语⾔实现的表达式求值引擎,主要⽤于各种表达式的动态求值。现在已经有很多开源可⽤的java表达式求值引擎,为什么
还需要Avaitor呢?
Aviator的设计⽬标是轻量级和⾼性能,相⽐于Groovy、JRuby的笨重,Aviator⾮常⼩,加上依赖包也才450K,不算依赖包的话只有70K;当然,Aviator的语法
是受限的,它不是⼀门完整的语⾔,⽽只是语⾔的⼀⼩部分集合。
其次,Aviator的实现思路与其他轻量级的求值器很不相同,其他求值器⼀般都是通过解释的⽅式运⾏,⽽Aviator则是直接将表达式编译成Java字节码,交给
JVM去执⾏。简单来说,Aviator的定位是介于Groovy这样的重量级脚本语⾔和IKExpression这样的轻量级表达式引擎之间。
特性介绍
Aviator的特性
⽀持⼤部分运算操作符,包括算术操作符、关系运算符、逻辑操作符、正则匹配操作符(=~)、三元表达式?:,并且⽀持操作符的优先级和括号强制优先
级,具体请看后⾯的操作符列表。
⽀持函数调⽤和⾃定义函数
⽀持正则表达式匹配,类似Ruby、Perl的匹配语法,并且⽀持类Ruby的$digit指向匹配分组。
⾃动类型转换,当执⾏操作的时候,会⾃动判断操作数类型并做相应转换,⽆法转换即抛异常。
⽀持传⼊变量,⽀持类似a.b.c的嵌套变量访问。
性能优秀
Aviator的限制:
没有ifelse、dowhile等语句,没有赋值语句,仅⽀持逻辑表达式、算术表达式、三元表达式和正则匹配。
没有位运算符
使⽤场景包括:
1.规则判断及规则引擎
2.公式计算
3.动态脚本控制
4.集合数据ELT等……
整体结构
Aviator的结构⾮常简单,⼀个典型的求值器的结构
Demo
创建项⽬
创建⼀个空的Maven项⽬
导⼊以下依赖
表达式求值引擎!----
dependency
groupIdcom.googlecode.aviator/groupId
artifactIdaviator/artifactId
version5.1.4/version
/dependency
dependency
groupIdjunit/groupId
artifactIdjunit/artifactId
version4.12/version
scopecompile/scope
/dependency
执⾏表达式
Aviator的使⽤都是集中通过com.googlecode.aviator.AviatorEvaluator这个⼊⼝类来处理,最简单的例⼦,执⾏⼀个计算1+2+3的表达式:
/**
计算*1+2+3
*/
@Test
publicvoidtest01(){
Longresult=(Long)AviatorEvaluator.execute(1+2+3);
System.out.println(result=+result);//6
}
细⼼的朋友肯定注意到结果是Long,⽽不是Integer。这是因为Aviator的数值类型仅⽀持Long和Double,任何整数都将转换成Long,任何浮点数都
将转换为Double,包括⽤户传⼊的变量数值。这个例⼦的打
您可能关注的文档
- GPDA试剂项目融资商业计划书(包括可行性研究报告+资金方案规划+2013.pdf
- Get清风青岛八级数学上册1.3.2尺规作图同步练习 .pdf
- GBT19001-2016+GBT24001-2016质量和环境管理体系内部审核员试卷及答案.pdf
- FXBJ-A型剥胶机安全操作规程 .pdf
- ESG与企业财务绩效的相关性研究 ——以科技行业上市公司为例共3篇.pdf
- epson 打印机许可 _原创精品文档.pdf
- Electric)走进杭州国科大高等研究院——共创智能时代 .pdf
- Dpdkek现代十大模具制造技术 .pdf
- CNG控件的组成 _原创精品文档.pdf
- cfs教师教学设计能力评价 .pdf
文档评论(0)