Java 6 Scripting

maio 28, 2007 às 11:03 pm | Publicado em Java | 6 Comentários

Você 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:

scripting_1.jpg

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:

scripting_2.jpg

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:

scripting_3.jpg

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:

scripting_4.jpg

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.

Anúncios

6 Comentários »

RSS feed for comments on this post. TrackBack URI

  1. Essa nova funcionalidade do Java é muito boa, além de servir para melhor customizar sistemas também serve para fazer testes unitários em funções javascripts.

  2. Essa nova funcionalidade não quebra um grande padrão de desenvolvimento chamado Business Delegate? onde a regra de negocio tem que estar na camada de controle e nesse caso estamos colocando na camada de web.

  3. Não consegui entender como isso pode quebrar uma implementação de business delegate. Tudo vai depender de como a integração foi implementada.

    Eu não vejo problemas em algumas regras de negócio serem movidas para script, principalmente aquelas que mudam frequentemente.

  4. Outro excelente post! Parabens Marcelo.

  5. Show ! Parabéns !
    Espero algum dia poder usar este poder …

  6. […] 4. Auto-Loading de Driver JDBC Setembro 12, 2007 at 10:15 pm | In Java | Como já citei anteriormente, o Java 6 trouxe algumas novidades interessantes. A biblioteca para acessar base de dados também […]


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Blog no WordPress.com.
Entries e comentários feeds.

%d blogueiros gostam disto: