项目作者: killme2008

项目描述 :
A high performance scripting language hosted on the JVM.
高级语言: Java
项目地址: git://github.com/killme2008/aviatorscript.git
创建时间: 2011-03-29T12:48:47Z
项目社区:https://github.com/killme2008/aviatorscript

开源协议:

下载


AviatorScript

Build Status
Maven Central

📖 English Documentation | 📖 中文文档


AviatorScript 是一门高性能、轻量级寄宿于 JVM (包括 Android 平台)之上的脚本语言。

It’s not a game, it’s a programming language. Please refrain from sending me any more unsolicited emails.RTFM

特性介绍

  1. 支持数字、字符串、正则表达式、布尔值、正则表达式等基本类型,完整支持所有 Java 运算符及优先级等。
  2. 函数是一等公民,支持闭包和函数式编程
  3. 内置 bigint/decimal 类型用于大整数和高精度运算,支持运算符重载得以让这些类型使用普通的算术运算符 +-*/参与运算。
  4. 完整的脚本语法支持,包括多行数据、条件语句、循环语句、词法作用域和异常处理等。
  5. 函数式编程结合 Sequence 抽象,便捷处理任何集合。
  6. 轻量化的模块系统
  7. 多种方式,方便地调用 Java 方法,完整支持 Java 脚本 API(方便从 Java 调用脚本)。
  8. 丰富的定制选项,可作为安全的语言沙箱和全功能语言使用。
  9. 动态编译和执行、轻量化、高性能,ASM 模式下通过直接将脚本编译成 JVM 字节码,解释模式可运行于 Android 等非标 Java 平台。
  10. 支持编译结果序列化,方便缓存加速等。支持执行超时设置,避免破坏性脚本耗尽资源。

使用场景包括:

  1. 规则判断及规则引擎
  2. 公式计算
  3. 动态脚本控制
  4. 集合数据 ELT 等
    ……

推荐使用版本 5.2.6 及以上

News

  • 5.4.3,增加安全沙箱一键启用方法以及修复 bug 等。
  • 5.4.2,增加 getFunctionNames 方法用于获取函数列表以及设置求值超时时间等。
  • 5.4.1,修复递归函数无法工作的 bug,修复函数无法序列化的 bug 等。

Dependency

  1. <dependency>
  2. <groupId>com.googlecode.aviator</groupId>
  3. <artifactId>aviator</artifactId>
  4. <version>{version}</version>
  5. </dependency>

可以在 search.maven.org 查看可用的版本。

快速开始

  1. 下载 aviator shell 到某个目录(最好是在系统的 PATH 环境变量内),比如 ~/bin/aviator:
  1. $ wget https://raw.githubusercontent.com/killme2008/aviator/master/bin/aviator
  2. $ chmod u+x aviator
  1. 执行 aviator 命令,将自动下载最新文档版本 aviator jar 到 ~/.aviatorscript 下的安装目录并运行:
  1. $ aviator
  2. Downloading AviatorScript now...
  3. % Total % Received % Xferd Average Speed Time Time Time Current
  4. Dload Upload Total Spent Left Speed
  5. 100 153 100 153 0 0 111 0 0:00:01 0:00:01 --:--:-- 111
  6. 100 1373k 100 1373k 0 0 689k 0 0:00:01 0:00:01 --:--:-- 689k
  7. Usage: java com.googlecode.aviator.Main [file] [args]
  8. : java com.googlecode.aviator.Main -e [script]
  9. : java com.googlecode.aviator.Main -v
  1. 将下面这个脚本保存为文件 hello.av:
  1. p("Hello, AviatorScript!");
  2. let a = tuple(1, 2, 3, 4, 5);
  3. p("sum of a is: " + reduce(a, +, 0));
  4. let date = new java.util.Date();
  5. p("The year is: "+ getYear(date));
  6. p("The month is: #{getMonth(date)}");

一个更复杂的计算器例子(求值算术表达式字符串)参见calculator.av

  1. 执行脚本:
  1. $ aviator hello.av
  2. Hello, AviatorScript!
  3. sum of a is: 15
  4. The year is: 120
  5. The month is: 3

更详细的请阅读用户指南

Links