• Aviator轻量级表达式执行引擎


    Aviator是一个高性能、轻量级的java语言实现的表达式求值引擎,主要用于各种表达式的动态求值。
    Aviator的设计目标是轻量级和高性能 ,相比于Groovy、JRuby的笨重,Aviator非常小,加上依赖包也才450K,不算依赖包的话只有70K;当然,Aviator的语法是受限的,它不是一门完整的语言,而只是语言的一小部分集合。
    其次,Aviator的实现思路与其他轻量级的求值器很不相同,其他求值器一般都是通过解释的方式运行,而Aviator则是直接将表达式编译成Java字节码,交给JVM去执行。简单来说,Aviator的定位是介于Groovy这样的重量级脚本语言和IKExpression这样的轻量级表达式引擎之间。
    特性
    Aviator的特性

    支持大部分运算操作符,包括算术操作符、关系运算符、逻辑操作符、正则匹配操作符(=~)、三元表达式?: ,并且支持操作符的优先级和括号强制优先级,具体请看后面的操作符列表。


    支持函数调用和自定义函数


    支持正则表达式匹配,类似Ruby、Perl的匹配语法,并且支持类Ruby的$digit指向匹配分组。

    自动类型转换,当执行操作的时候,会自动判断操作数类型并做相应转换,无法转换即抛异常。

    支持传入变量,支持类似a.b.c的嵌套变量访问。

    性能优秀
    Aviator的限制:

    没有if else、do while等语句,没有赋值语句,仅支持逻辑表达式、算术表达式、三元表达式和正则匹配。

    没有位运算符 文档地址:http://www.slideshare.net/killme2008/aviator
    点击次数   官方主页【官方主页】   下载地址【下载地址】

    网友留言/评论

    我要留言/评论

    相关开源项目

    拍卖模拟器 JASA: JASA是一个高性能的拍卖模拟器。它是专为执行基于代理的计算经济学实验。它实现了双拍卖市场的变种,这是常用的运行真正的世界市场的地方,如证券交易所。它被设计为具有高度可扩展性,所以可以轻松实现,其他类型的拍卖。该软件还提供了一个基类,实施简单的自适应贸易代理。
    Java远程调用:BRAP: BRAP是一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。如:当开发一个程序大小需要考量的胖客户端程序时。BRAP支持用Remoting With Streams来发送和接收大型附件并且可以很方便添加进度提醒和取消/恢复传输。
    EverBox SDK: 盛大网盘产品EverBox软件开发工具包,来自盛大创新院云计算分院。EverBox网盘是由盛大创新院推出的一款网盘产品,提供了15GB超大的免费存储空间,支持文件同步、文件分享、在线浏览照片、在线听音乐等功能。EverBox 是一款数据存储产品,提供同步文件服务。当您在一台电脑或者手持设备上把 一个文件放入到 EverBox 中, 您将可以随时、 随地在所有安装了 EverBox 的终端上 (Windows / Mac / IPad / IPhone / Android)访问这个文件。
    Blister: Blister是一个用于操作苹果二进制PList格式文件的Java开源类库(可用于发送数据给iOS应用程序)。
    Commons-Email:Commons-Email的目的是提供一组用于发送Email的API,它基于Java Mail API基础之上并进行了简化。它提供的主要Java类有:SimpleEmail:这个类用于发送简单的文本类型email。MultiPartEmail:这个类允许发送文本消息并附带附件。HtmlEmail:用于发送Html格式的附件并支持内含图片。EmailAttachment:这是一个简单的容器类用于简化附件的处理。
    Jakarta Regexp:Regexp是一个100%纯java正则式处理包,是Jonathan Locke捐给Apache软件基金会的。
    Voldemort: Voldemort是一个分布式键-值(Key-value)存储系统,是Amazon's Dynamo的一个开源克隆。支持自动复制数据到多个服务器上。支持数据自动分割所以每个服务器只包含总数据的一个子集。提供服务器故障透明处理功能。支持可拨插的序化支持,以实现复杂的键-值存储,它能够很好的集成常用的序化框架如:Protocol Buffers、Thrift、Avro和Java Serialization。数据项都被标识版本能够在发生故障时尽量保持数据的完整性而不会影响系统的可用性。每个节点相互独立,互不影响。支持可插拔的数据放置策略。
    Java浏览器组件:JRex: JRex是一个Java浏览器组件,提供一组API用于将Mozilla GECKO嵌到Java应用程序中。可以使用JRex来获取经过浏览器渲染的HTML。
    Spring Batch: Spring Batch项目是一个轻量级的全面的基于Spring的批处理框架。它能够管理批处理和离线处理,从而使应用开发者将注意力集中在业务逻辑上。编写可以单独测试的轻量级应用代码的能力;一个执行、管理和监控离线处理结果的强大的框架。它可实际应用于
    营业结束处理,比如报表、订单处理、和财务对帐单
    导入和导出处理,比如表单处理、清单导入、配置导出
    大规模输出工作,比如email操作和财务决算
    Jackson: Jackson是一个采用Java开发的高性能JSON处理器(JSON解析器+JSON生成器)。它比其它任何Java JSON Parser和Data Binder都快。除了基本的JSON读写功能之外,它提供完全基于节点的Tree Model和完整的OJM (Object/Json Mapper)数据绑定功能,可以绑定任意Java Bean、Collection、Map或Enum。