AviatorScript
Documentação em Inglês | Documentação em Chinês
AviatorScript
é uma linguagem de script leve e de alto desempenho hospedada na JVM (incluindo a plataforma Android).
Não é um jogo, é uma linguagem de programação. Evite me enviar mais e-mails não solicitados.RTFM.
Introdução de recursos
- Ele oferece suporte a tipos básicos como números, strings, expressões regulares, valores booleanos e expressões regulares, e oferece suporte total a todos os operadores e prioridades Java.
- As funções são cidadãs de primeira classe, apoiando fechamentos e programação funcional.
- Os tipos bigint/decimal integrados são usados para números inteiros grandes e operações de alta precisão são suportadas para permitir que esses tipos usem operadores aritméticos comuns
+-*/
para participar de operações. - Suporte completo à sintaxe de script, incluindo dados multilinhas, instruções condicionais, instruções de loop, escopo léxico e tratamento de exceções, etc.
- A programação funcional combinada com a abstração de sequência facilita o manuseio de qualquer coleção.
- Sistema de módulo leve.
- Várias maneiras de chamar métodos Java de maneira conveniente, com suporte total à API de script Java (conveniente para chamar scripts de Java).
- Ricas opções de personalização, disponíveis como sandbox de linguagem segura e como linguagem completa.
- Compilação e execução dinâmica, leve e de alto desempenho, compilando scripts diretamente em bytecode JVM no modo ASM, o modo interpretado pode ser executado em plataformas Java não padrão, como Android.
- Suporta serialização de resultados de compilação para facilitar a aceleração de cache, etc. Suporta configurações de tempo limite de execução para evitar que scripts destrutivos fiquem sem recursos.
Os cenários de uso incluem:
- Julgamento de regras e mecanismo de regras
- Cálculo de fórmula
- Controle de script dinâmico
- Coleta de dados ELT etc...
Recomenda-se usar a versão 5.2.6 e superior
Notícias
- 5.4.3, adicione o método de ativação com um clique da sandbox de segurança e corrija bugs, etc.
- 5.4.2, adicione o método
getFunctionNames
para obter a lista de funções e definir o tempo limite de avaliação, etc. - 5.4.1, corrija o bug de que a função recursiva não pode funcionar, corrija o bug de que a função não pode ser serializada, etc.
Dependência
< dependency >
< groupId >com.googlecode.aviator</ groupId >
< artifactId >aviator</ artifactId >
< version >{version}</ version >
</ dependency >
As versões disponíveis podem ser visualizadas em search.maven.org.
início rápido
- Baixe o shell do aviador para um diretório (de preferência dentro da variável de ambiente
PATH
do sistema), como ~/bin/aviator
:
$ wget https://raw.githubusercontent.com/killme2008/aviator/master/bin/aviator
$ chmod u+x aviator
- A execução do comando
aviator
baixará automaticamente a versão mais recente do documento aviator jar para o diretório de instalação em ~/.aviatorscript
e executará:
$ 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
- Salve o seguinte script como o arquivo
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)}" ) ;
Para obter um exemplo de calculadora mais complexa (avaliando uma sequência de expressões aritméticas), consulte calculator.av.
- Execute o script:
$ aviator hello.av
Hello, AviatorScript !
sum of a is: 15
The year is: 120
The month is: 3
Por favor, leia o guia do usuário para obter mais detalhes.
Ligações
- Lançamentos: https://github.com/killme2008/aviator/releases
- Documentos: https://www.yuque.com/boyan-avfmj/aviatorscript
- Registro de alterações: https://www.yuque.com/boyan-avfmj/aviatorscript/bggwx2
- Javadoc: http://fnil.net/aviator/apidocs/
- Regra de inicialização Spring: https://github.com/mengxiangrui007/spring-boot-rule-jsr94
- Plug-in de ideias: https://github.com/yanchangyou/aviatorscript-ideaplugin