English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Nashorn é um motor javascript.
O Motor JavaScript Nashorn no Java 15 já não está disponível.
Isso já não está disponível no Java 11 marcado como:
@deprecated (forRemoval = true)
do JDK 1.8 a partir do JDK 1.6, JDK1.7) para se tornar o motor JavaScript embutido do Java. O Nashorn é completamente compatível com ECMAScript 5.1 especificação e algumas extensões. Ele usa a base JSR 292 das novas características da linguagem, que estão incluídas no JDK 7 introduzido no invokedynamic, compila JavaScript em bytecode Java.
Comparado com a implementação anterior do Rhino, isso trouxe 2 até 10melhoria de desempenho.
O jjs é uma ferramenta de linha de comando baseada no motor Nashorn. Ele aceita alguns códigos-fonte JavaScript como parâmetros e executa esses códigos.
Por exemplo, criamos um arquivo sample.js com o seguinte conteúdo:
print('Olá Mundo!');
Abra o console e insira o seguinte comando:
$ jjs sample.js
O resultado de saída do programa acima é:
Olá Mundo!
Abra o console e insira o seguinte comando:
$ jjs jjs> print("Olá, Mundo!") Olá, Mundo! jjs> quit() >>
Abra o console e insira o seguinte comando:
$ jjs -- a b c jjs> print('Letras: ' +arguments.join(", ")) Letras: a, b, c jjs>
Usando ScriptEngineManager, o código JavaScript pode ser executado no Java, exemplo a seguir:
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 = "w3codebox"; Integer result = null; try { nashorn.eval("print('" + name + "')"); result = (Integer) nashorn.eval("10 + 2"); }catch(ScriptException e){ System.out.println("Erro ao executar o script: ");+ e.getMessage()); } System.out.println(result.toString()); } }
Executar o script acima, o resultado de saída será:
$ javac Java8Tester.java $ java Java8Tester w3codebox 12
A seguir, há um exemplo que demonstra como referenciar classes Java no JavaScript:
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);
Usamos o comando jjs para executar o script acima e obter os seguintes resultados:
$ jjs sample.js 78952000000000002017.94