Rhino – Utilizando JavaScript com Java

jsImagine se você conseguisse reaproveitar o seu código JavaScript no seu código Java. Por exemplo, utilizar o mesmo script que faz a verificação de email no frontend para fazer a verificação na sua camada de controle. Pois bem, isso já existe e é fácil de fazer quando você utiliza o Rhino.

Rhino é uma implementação open source do JavaScript baseada na linguagem de programação Java.

O código para utilização de JavaScript dentro do Java é bem simples, você pode adicionar os comandos JavaScript no seu código Java ou chamar uma função do seu arquivo “.js”.

Segue um exemplo onde é chamado uma função Javascript para ser utilizada dentro do código Java.

O exemplo é bem simples, é uma função que valida o email digitado pelo usuário. Na Listagem 1 abaixo temos a função JavaScript no arquivo “script.js”.

function valida_email(email) {

var filter = /^([w-]+(?:.[w-]+)*)@((?:[w-]+.)*w[w-]{0,66}).([a-z]{2,6}(?:.[a-z]{2})?)$/i;
if (filter.test(email))
  return true;
else 
  return false;
}
Listagem 1 – Função Javascript para validação de email

No código Java o que precisamos fazer é muito fácil:

public Boolean validaEmail(String email) throws NoSuchMethodException,
FileNotFoundException, ScriptException {

ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
Invocable invocable = (Invocable) engine;

engine.eval(new FileReader("src/main/resources/script.js"));
Boolean resultado = (Boolean) invocable.invokeFunction("valida_email", email);

return resultado;
}
Listagem 2 – Código Java que utiliza o Rhino para chamar função JavaScript

Criamos a fábrica “ScriptEngineManager” e com ela criamos o “ScriptEngine”, que será o objeto responsável por manipular a linguagem. Notem que quando construímos o engine especificamos qual é a linguagem que desejamos manipular, neste caso é JavaScript. Depois criamos também uma variável do tipo “Invocable” utilizando o engine, esta variável será responsável por chamar as funções JavaScript.

O próximo passo é ler o arquivo JavaScript, no exemplo será o arquivo “script.js”, utilizando o engine que foi criado anteriormente.

Por último utilizamos a variável invocable para chamar a função “valida_email” que está contida dentro do arquivo JavaScript . A função retorna se o email passado é válido ou não.

Fim 🙂 . Só isso?! Sim! É simples e prática a utilização do Rhino, você reaproveita código e ganha produtividade por não precisar fazer dois códigos iguais em diferentes linguagens.

A partir da versão Java 6 o Rhino vem empacotado com o Java sem a necessidade de adicionar a lib no classpath do projeto.

No Java 8 o sucessor do Rhino é o Nashorn .

Por MONISE COSTA

Formada em Sistemas de Informação pela PUC Campinas, MATERANA desde 2011. Apaixonada pela área de TI, Analista de Requisitos na maior parte do tempo e desenvolvedora Java/Android por lazer.

Postado em: 16 de janeiro de 2015

Confira outros artigos do nosso blog

REST não é JSON

21 de agosto de 2017

Bruno Sofiato

[Webinar] Profile de aplicações Java com Oracle Mission Control e Flight Recorder

24 de julho de 2017

Danival Calegari

Criando Mocks de serviços REST com SoapUI

27 de junho de 2017

Monise Costa

JavaScript 6: diferença entre var, let e const

09 de maio de 2017

Otávio Felipe do Prado

Deixe seu comentário