zoukankan      html  css  js  c++  java
  • aviator使用手册在线

    Aviator是一个高性能、轻量级的 java 语言实现的表达式求值引擎, 主要用于各种表达式的动态求值。现在已经有很多开源可用的 java 表达式求值引擎,为什么还需要 Avaitor 呢?

    Aviator的设计目标是轻量级和高性能,相比于Groovy、JRuby的笨重, Aviator非常小, 加上依赖包也才450K,不算依赖包的话只有 70K; 当然, Aviator的语法是受限的, 它不是一门完整的语言, 而只是语言的一小部分集合。

    其次, Aviator的实现思路与其他轻量级的求值器很不相同, 其他求值器一般都是通过解释的方式运行, 而Aviator则是直接将表达式编译成Java 字节码, 交给JVM去执行。简单来说, Aviator的定位是介于Groovy这样的重量级脚本语言和IKExpression这样的轻量级表达式引擎 之间。
    Aviator支持大部分运算操作符, 包括算术操作符、关系运算符、逻辑操作符、位运算符、正则匹配操作符(=~)、三元表达式(?:), 并且支持操作符的优先级和括号强制优先级, 具体请看后面的操作符列表, 支持自定义函数.

    https://github.com/killme2008/aviator/wiki

    还是要说,如果可以的话,可以内定一种业务伪代码(比如可参考spring EL的一些规格),然后在打包前自己写个工具翻译成.java文件,运行时仍然使用的是java,这样在效率上通常会大幅度提升,如果水平足够好的话,采用运行时字节码操作也未尚不可。其实这也是当下很多流程系统比如jbpm性能低下的原因之一吧。不过确实存在一个强大、但是却没有被广泛宣传的EL库,在我们稽核的业务中,其性能和Java原生调用性能几乎相同,采用的是java cc技术,我们将其广泛用于序列化和反序列化场景。在此之前,我们使用了mvel2、spel,性能相比原生都是几十倍的下降,产品开发团队强烈要求我们框架组提供高性能版本。

  • 相关阅读:
    springmvc 与 springfox-swagger2整合
    [转]TensorFlow如何进行时序预测
    CORSFilter
    [转]完美解决)Tomcat启动提示At least one JAR was scanned for TLDs yet contained no TLDs
    基础开发平台要求
    ssm配置
    mysql重置root密码,并设置可远程访问
    angularjs写日期组件
    看angularjs项目的一些知识记录
    AngularJS 指令的 Scope (作用域)
  • 原文地址:https://www.cnblogs.com/zhjh256/p/6146105.html
Copyright © 2011-2022 走看看