English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Nashorn è un motore JavaScript.
Il motore JavaScript Nashorn non è più disponibile nella Java 15.
Questo è stato etichettato come non più disponibile nella Java 11:
@deprecated (perRimozione = true)
Dalla JDK 1.8, Nashorn ha sostituito Rhino (JDK 1.6, JDK 1.7) come motore JavaScript integrato in Java. Nashorn supporta completamente la specifica ECMAScript 5.1 e alcune estensioni. Utilizza le nuove caratteristiche linguistiche basate su JSR 292, tra cui l'instruzione invokedynamic introdotta nella JDK 7, per compilare JavaScript in bytecode Java.
Confrontato con l'implementazione precedente di Rhino, questo offre un miglioramento delle prestazioni di 2 a 10 volte.
jjs è uno strumento della riga di comando basato sul motore Nashorn. Accetta alcuni script JavaScript come parametri e li esegue.
Ad esempio, creiamo un file sample.js con il seguente contenuto:
print('Ciao Mondo!');
Apri la console e inserisci il seguente comando:
$ jjs sample.js
Il risultato di output del programma sopra è:
Hello World!
Apri la console e inserisci il seguente comando:
$ jjs jjs> print("Hello, World!") Hello, World! jjs> quit() >>
Apri la console e inserisci il seguente comando:
$ jjs -- a b c jjs> print('Lettere: ' +arguments.join(", ")) Lettere: a, b, c jjs>
Utilizzando ScriptEngineManager, il codice JavaScript può essere eseguito in Java, come nell'esempio seguente:
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("Errore di esecuzione dello script: "+ e.getMessage()); } System.out.println(result.toString()); } }
Esegui lo script sopra, il risultato di output è:
$ javac Java8Tester.java $ java Java8Tester w3codebox 12
Esempio seguente dimostra come fare riferimento a classi Java in 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);
Usiamo il comando jjs per eseguire lo script sopra, i risultati di output sono i seguenti:
$ jjs sample.js 78952000000000002017.94