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