Java 8 Nashorn JavaScript
Nashorn ist eine JavaScript-Engine.
Die Nashorn-JavaScript-Engine ist in Java 15 nicht mehr verfügbar.
Dies wurde in Java 11 als veraltet markiert:
@deprecated (forRemoval = true)
Ab JDK 1.8 ersetzte Nashorn Rhino (JDK 1.6, JDK 1.7) als eingebettete JavaScript-Engine von Java. Nashorn unterstützt die ECMAScript 5.1-Spezifikation vollständig sowie einige Erweiterungen. Es verwendet neue Sprachfunktionen basierend auf JSR 292, einschließlich des in JDK 7 eingeführten invokedynamic, um JavaScript in Java-Bytecode zu kompilieren.
Im Vergleich zur vorherigen Rhino-Implementierung bringt dies eine 2- bis 10-fache Leistungsverbesserung.
jjs
jjs ist ein auf der Nashorn-Engine basierendes Kommandozeilenwerkzeug. Es akzeptiert JavaScript-Quellcode als Parameter und führt diesen Quellcode aus.
Zum Beispiel erstellen wir eine Datei sample.js mit dem folgenden Inhalt:
print('Hello World!');
Öffnen Sie die Konsole und geben Sie den folgenden Befehl ein:
$ jjs sample.js
Die Ausgabe des obigen Programms ist:
Hello World!
Interaktive Programmierung mit jjs
Öffnen Sie die Konsole und geben Sie den folgenden Befehl ein:
$ jjs
jjs> print("Hello, World!")
Hello, World!
jjs> quit()
>>
Parameter übergeben
Öffnen Sie die Konsole und geben Sie den folgenden Befehl ein:
$ jjs -- a b c
jjs> print('字母: ' +arguments.join(", "))
字母: a, b, c
jjs>
JavaScript aus Java aufrufen
Mit ScriptEngineManager kann JavaScript-Code in Java ausgeführt werden, wie im folgenden Beispiel gezeigt:
Java8Tester.java-Datei
Führen Sie das obige Skript aus, das Ausgabeergebnis ist:
$ javac Java8Tester.java $ java Java8Tester Example 12
Java aus JavaScript aufrufen
Das folgende Beispiel zeigt, wie man Java-Klassen in JavaScript referenziert:
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);
Wir verwenden den Befehl jjs, um das obige Skript auszuführen, und die Ausgabe lautet wie folgt:
$ jjs sample.js 78952000000000002017.94
Andere Erweiterungen
Neue Funktionen in Java 8