aviatorscript

A high performance scripting language hosted on the JVM.

2949
599
Java

AviatorScript

Build Status
Code Quality: Java
Maven Central

📖 English Documentation | 📖 中文文档


AviatorScript is a lightweight, high performance scripting language hosted on the JVM (and Android platform).
It compiles script to java byte code and evaluate it on the fly.

Feature Intro

  1. Suppport number,string, boolean and regular expression etc. basic types,support all java operators and their priorities.
  2. Function is first-class, supports closure and functional programming.
  3. Supports bigint/decmal for big integer and big decimal operations, using normal arithmetic operators +-*/ by operator overloading.
  4. Full-featured scripting language syntax, such as multi statements, conditional statement ,for/while loop, lexical scope and exception handling.
  5. Processing collections/array conveniently by sequence abstract and functional programming.
  6. Lightweight module system。
  7. Call Java methods conveniently,supports Java Scripting API。
  8. A wide range of customization options to be used as a secure runtime scripting sandbox or full-featured scripting language.
  9. Lightweight and high performance. ASM mode compile script into JVM bytecode on fly ,and interpreter mode make it run on Android platform etc.
  10. Supports compiled expression serialization, easy to cache etc.

Recommend version 5.2.6 and above.

News

  • 5.4.1,Fixed recursive function can’t work, fixed function can’t be serialized etc.
  • 5.4.0,Fixed elsif parser errors,supports expression serialization(example) etc.
  • 5.3.3,fixed potential memory leak, wrong value captured by function etc.

Dependency

<dependency>
  <groupId>com.googlecode.aviator</groupId>
  <artifactId>aviator</artifactId>
  <version>{version}</version>
</dependency>

Check available versions at search.maven.org.

Quick Start

  1. Download aviator shell script to a directory in system PATH environment variable,such as ~/bin/aviator:
$ wget https://raw.githubusercontent.com/killme2008/aviator/master/bin/aviator
$ chmod u+x aviator
  1. Execute aviator command,it will download the latest aviator jar to ~/.aviatorscript directory:
$ aviator
Downloading AviatorScript now...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   153  100   153    0     0    111      0  0:00:01  0:00:01 --:--:--   111
100 1373k  100 1373k    0     0   689k      0  0:00:01  0:00:01 --:--:--  689k
Usage: java com.googlecode.aviator.Main [file] [args]
     : java com.googlecode.aviator.Main -e [script]
     : java com.googlecode.aviator.Main -v
  1. Save the script below in file hello.av:
p("Hello, AviatorScript!");

let a = tuple(1, 2, 3, 4, 5);

p("sum of a is: " + reduce(a, +, 0));

let date = new java.util.Date();
p("The year is: "+ getYear(date));
p("The month is: #{getMonth(date)}");
  1. Execute the script with aviator command:
$ aviator hello.av
Hello, AviatorScript!
sum of a is: 15
The year is: 120
The month is: 3

A complex example is calculator.av which evaluates arithmetic expression in string.

Read user guide for details.

Links