Chamar método JavaScript via Java Desktop

4 respostas
javascriptjava
rodriguesabner

E aí pessoal, beleza? Depois de uma discussão com um amigo sobre chamar funções do js no java, eu acabei achando uns trechos de código bem interessante, vou estar postando aqui para futuras dúvidas.

Bom, primeiro eu criei um arquivo chamado script.js e dentro dele uma função bem básica (JavaScript):

function multiplicar(numero) { 
  return numero * numero; //Basicamente ele só vai multiplicar o número por ele mesmo.
}

É isso, criei o arquivo, inseri a função, salvei. OK.

Fui na minha IDE e criei o seguinte método (Java):

public void multiplicarNumero(int numero) throws NoSuchMethodException, FileNotFoundException, ScriptException { 
    //NoShuchMethod (Método não encontrado), FileNotFound (Arquivo não encontrado), ScriptException (Como o nome já diz, tem erro no seu script).
    ScriptEngineManager factory = new ScriptEngineManager(); // Permite escolher linguagens diferentes da tradicional Java
    ScriptEngine engine = factory.getEngineByName("JavaScript"); //Escolhemos a linguagem que será utilizada, nesse caso é o JavaScript
    Invocable invocable = (Invocable) engine;

    engine.eval(new FileReader("C:\\Imperium\\script.js")); //escolhemos onde o arquivo está, pasta+arquivo.extensao
    Double resultado = (Double) invocable.invokeFunction("multiplicar", numero); //Aqui chamamos o a Function do nosso Script ("multiplicar") e passamos a variável "número" que declaramos no método.
    System.out.println("O resultado da sua função é: " + resultado); //Aqui a gente mostra o resultado
}

Saída: O resultado da sua função é: 100.0

Espero que seja útil para vocês :smiley:

4 Respostas

darlan_machado

Desde que o java percebeu o quanto scripts são poderosos e passou a oferecer suporte a isso, o mundo não é mais o mesmo.
Porém, acho bem válido, chegamos a usar em alguns projetos e a diferença em termos de poder de processamento é enorme.

FearX

Opa. Não tinha lido os “//”. Bacana, Abner. Parabéns novamente!

FearX

Única correção é nessa linha. O que você tem que chamar é o método que o JS vai usar, no seu caso, “multiplicar”);

rodriguesabner

Opa, isso mesmo Fear, valeu, não me atentei nessa linha. Obrigado!

Criado 1 de março de 2019
Ultima resposta 1 de mar. de 2019
Respostas 4
Participantes 3