Java 6 Scripting
maio 28, 2007 às 11:03 pm | Publicado em Java | 6 ComentáriosVocê deve estar pensando… que diabos é isso???
O suporte a scripting foi uma das grandes novidades da nova versão do java. Consiste em uma API que permite aplicações java executar programas escritos em linguagens de script, por exemplo JavaScript.
Toda a mágica de interpretar e executar um script está abstraído em objetos que implementam a interface ScriptEngine. Ou seja, cada linguagem terá uma implemetação do ScriptEngine que saberá tratar suas especificidades.
Portanto, é necessário que alguém controle todas estas implementações. Eis que surge o ScriptEngineManager, é através dele que se obtêm um ScriptEngine.
Tudo fica mais claro com um exemplo:
Através de um objeto ScriptEngineManager recuperamos o ScriptEngine que sabe executar código javascript. O método eval invoca o interpretador de script. Como parâmetro foi passado um Reader do arquivo que contém o script.
A interface Invocable possui métodos que torna possível invocar funções do script que foi carregado pelo interpretador. No exemplo foi invocado a função teste() e passado como parâmetro um objeto Pessoa (um simples POJO). Também foi impresso o retorno da função.
Veja o código javascript que foi executado:

Um…. Veja que isso é código javascript. Parece estranho mas o método getNome() é invocado sobre o objeto pessoa recebido como parâmetro. Já sabemos que toda a mágica é feita pelo ScriptEngine. Execute o código e veja o resultado.
Vamos melhorar nosso exemplo:
A função inserirPessoa(pessoa) será responsável por validar e invocar na ctrl o método java responsável por inserir o objeto no banco de dados.
A função retornará true se o objeto for inserido com sucesso, caso contrário retornará false.
Veja a classe CtrlPessoa:
Para instanciar um objeto da classe CtrlPessoa, é preciso importar a classe CtrlPessoa. A sintaxe é um pouco estranha:
importClass(Package.<pacote+classe>);
O prefixo Package é necessário.
Também é possível importar todas as classes de um pacote usando:
importPackage(<pacote>); – ex: importPackage(javax.swing);
———–
O suporte a scripting pode ajudar a resolver muitos problemas. Por exemplo: se as regras de negócio de seu sistema mudam constatemente pode ser interessante deixá-las em linguagens de script.
Espero que tenham gostado. Em breve mostrarei mais características desta API.
Para quem quer conhecer outras implementações de ScriptEngine, pode encontrar maiores informações aqui.
Blog no WordPress.com. | Tema: Pool até Borja Fernandez.
Entradas e comentários feeds.


