Java 8 - Nashorn JavaScript

Com o Java 8, Nashorn, um mecanismo javascript muito melhorado é introduzido para substituir o Rhino existente. O Nashorn oferece um desempenho 2 a 10 vezes melhor, pois compila diretamente o código na memória e passa o bytecode para a JVM. O Nashorn usa o recurso de dinâmica de chamada, introduzido no Java 7 para melhorar o desempenho.

jjs

Para o motor Nashorn, JAVA 8 apresenta uma nova ferramenta de linha de comando, jjs, para executar códigos javascript no console.

Interpretando arquivo js

Crie e salve o arquivo sample.js em c: \> pasta JAVA.

sample.js

print('Hello World!');

Abra o console e use o seguinte comando.

C:\JAVA>jjs sample.js

Ele produzirá a seguinte saída:

Hello World!

jjs no modo interativo

Abra o console e use o seguinte comando.

C:\JAVA>jjs
jjs> print("Hello, World!")
Hello, World!
jjs> quit()
>>

Passar argumentos

Abra o console e use o seguinte comando.

C:\JAVA> jjs -- a b c
jjs> print('letters: ' +arguments.join(", "))
letters: a, b, c
jjs>

Chamando JavaScript de Java

Usando ScriptEngineManager, o código JavaScript pode ser chamado e interpretado em Java.

Exemplo

Crie o seguinte programa Java usando qualquer editor de sua escolha em, digamos, C: \> JAVA.

Java8Tester.java

import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;

public class Java8Tester {

   public static void main(String args[]) {
      ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
      ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn");
		
      String name = "Mahesh";
      Integer result = null;
      
      try {
         nashorn.eval("print('" + name + "')");
         result = (Integer) nashorn.eval("10 + 2");
         
      } catch(ScriptException e) {
         System.out.println("Error executing script: "+ e.getMessage());
      }
      System.out.println(result.toString());
   }
}

Verifique o resultado

Compile a classe usando javac compilador da seguinte forma -

C:\JAVA>javac Java8Tester.java

Agora execute o Java8Tester da seguinte maneira -

C:\JAVA>java Java8Tester

Deve produzir o seguinte resultado -

Mahesh
12

Chamando Java de JavaScript

O exemplo a seguir explica como importar e usar classes Java em java script.

Criar e salvar sample.js em c: \> pasta JAVA.

sample.js

var BigDecimal = Java.type('java.math.BigDecimal');

function calculate(amount, percentage) {

   var result = new BigDecimal(amount).multiply(new BigDecimal(percentage)).divide(
      new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_EVEN);
   
   return result.toPlainString();
}
var result = calculate(568000000000000000023,13.9);
print(result);

Abra o console e use o seguinte comando.

C:\JAVA>jjs sample.js

Ele deve produzir a seguinte saída -

78952000000000000003.20