Java 8 Nashorn JavaScript
Java 8 nouvelles fonctionnalités
Nashorn un moteur javascript.
JDK 1.8 depuis le début, Nashorn substitué Rhino (JDK 1.6, JDK1.7) est devenu Java embarqué moteur JavaScript. Nashorn soutient pleinement ECMAScript 5.1 spécification et certaines extensions. Il est basé sur l'utilisation de la nouvelle langue dispose JSR 292, qui contient introduit dans le JDK 7 à invokedynamic, le JavaScript compilé en code octet Java.
Par rapport à la réalisation précédente Rhino, qui a 2-10 fois la performance.
jjs
moteur jjs Nashorn est un outil de ligne de commande sur la base. Il accepte une partie de code source JavaScript pour les paramètres, et exécute le code source.
Par exemple, nous créons fichier sample.js avec le contenu suivant:
print('Hello World!');
Ouvrez la console, entrez la commande suivante:
$ jjs sample.js
La sortie du programme ci-dessus est:
Hello World!
programmation interactive jjs
Ouvrez la console, entrez la commande suivante:
$ jjs jjs> print("Hello, World!") Hello, World! jjs> quit() >>
passage de paramètres
Ouvrez la console, entrez la commande suivante:
$ jjs -- a b c jjs> print('字母: ' +arguments.join(", ")) 字母: a, b, c jjs>
Java appelant JavaScript
Utilisez ScriptEngineManager, code JavaScript peut être exécuté en Java, les exemples sont les suivants:
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 = "w3big"; Integer result = null; try { nashorn.eval("print('" + name + "')"); result = (Integer) nashorn.eval("10 + 2"); }catch(ScriptException e){ System.out.println("执行脚本错误: "+ e.getMessage()); } System.out.println(result.toString()); } }
Mise en œuvre du script ci-dessus, la sortie est:
$ javac Java8Tester.java $ java Java8Tester w3big 12
JavaScript Java Calling
L'exemple suivant montre comment référencer les classes Java en 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);
Nous utilisons script de commande jjs ci-dessus, les résultats de sortie sont les suivantes:
$ jjs sample.js 78952000000000002017.94