Java 8 Nashorn JavaScript
Nashorn est un moteur JavaScript.
Le moteur JavaScript Nashorn n'est plus disponible dans Java 15.
Ceci a été marqué comme déprécié dans Java 11 :
@deprecated (forRemoval = true)
À partir du JDK 1.8, Nashorn a remplacé Rhino (JDK 1.6, JDK 1.7) comme moteur JavaScript embarqué de Java. Nashorn prend entièrement en charge la spécification ECMAScript 5.1 ainsi que certaines extensions. Il utilise de nouvelles fonctionnalités du langage basées sur JSR 292, y compris invokedynamic introduit dans JDK 7, pour compiler du JavaScript en bytecode Java.
Par rapport à l'implémentation précédente de Rhino, cela apporte une amélioration des performances de 2 à 10 fois.
jjs
jjs est un outil en ligne de commande basé sur le moteur Nashorn. Il accepte du code source JavaScript en paramètres et exécute ce code source.
Par exemple, nous créons un fichier sample.js avec le contenu suivant :
print('Hello World!');
Ouvrez la console et saisissez la commande suivante :
$ jjs sample.js
La sortie du programme ci-dessus est :
Hello World!
Programmation interactive avec jjs
Ouvrez la console et saisissez la commande suivante :
$ jjs
jjs> print("Hello, World!")
Hello, World!
jjs> quit()
>>
Passage de paramètres
Ouvrez la console et saisissez la commande suivante :
$ jjs -- a b c
jjs> print('字母: ' +arguments.join(", "))
字母: a, b, c
jjs>
Appel de JavaScript depuis Java
En utilisant ScriptEngineManager, le code JavaScript peut être exécuté en Java, comme le montre l'exemple suivant :
Fichier Java8Tester.java
Exécutez le script ci-dessus, le résultat de sortie est :
$ javac Java8Tester.java $ java Java8Tester Example 12
Appel de Java depuis JavaScript
L'exemple suivant montre comment référencer des 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 la commande jjs pour exécuter le script ci-dessus, et la sortie est la suivante :
$ jjs sample.js 78952000000000002017.94
Autres extensions
Nouveautés de Java 8