Esse artigo faz parte da revista Java Magazine edição 52. Clique aqui para ler todos os artigos desta edição 

LY: Verdana; mso-bidi-font-family: Myriad-Bold">Aplicando Scripts no Java SE

Personalização de aplicações Java e DSLs

 

Com o lançamento do Java SE 6, que inclui a implementação da JSR-233 (Scripting for the Java Platform), tornou-se possível executar scripts escritos em diversas linguagens, diretamente do código Java. O uso de linguagens de script é às vezes associado a contornos técnicos mal planejados, mas os scripts (que são  tipicamente programas curtos, interpretadose dinâmicos) são úteis em diversas situações – e não só no ambiente web.

Um sistema de vendas pode, por exemplo, usar scripts para permitir a personalização das regras de definição de preços. Outros exemplos são a definição de filtros de correio eletrônico, condições em fluxos de trabalho e o cálculo de folhas de pagamento. Nessas tarefas, que necessitam de grande flexibilidade e da intervenção do usuário, os scripts podem ser de muita ajuda.

Note que scripts desse tipo normalmente têm uma finalidade bastante específica e podem aproveitar recursos oferecidos por uma linguagem igualmente específica, que se adapte melhor ao problema. Em muitos casos, a própria linguagem pode ser modificada, criando uma nova linguagem direcionada para resolver até mesmo um único problema: o seu. Estas linguagens que não servem a muitos propósitos, como Java, mas a um propósitoespecífico, são comumente classificadas como Linguagens de Domínio Específico,ou DSLs na sigla em inglês.

Este artigo mostra como criar uma DSL simples para cálculo de preços em um sistema de vendas hipotético, usando Java 6 e Groovy.

 

Executando um script

No JDK 6, scripts são executados usando a classe ScriptEngine. Este engine é o responsável por controlar a execução de scripts e pode ser implementado totalmente em Java, como é feito para JRuby ou Groovy, ou usando um interpretador externo, como é o caso para PHP e AppleScript. O JDK 6 já inclui o engine de scripts Mozilla Rhino para JavaScript, que pode ser instanciado com o seguinte código:

 

import javax.script.*;

...

ScriptEngineManager manager = new ScriptEngineManager();

ScriptEngine engine = manager.getEngineByName(“javascript”);

 

Feito isso, já se pode executar código JavaScript usando uma das variações do método eval(); por exemplo:

 

engine.eval(“cliente={nome:’Julio’,idade:15}; print(cliente.nome);”); ...

Quer ler esse conteúdo completo? Tenha acesso completo