Java 8 Nashorn JavaScript Engine: Leistungsboost & neues jjs-Tool
Mit Java 8 wird Nashorn eingeführt – eine deutlich verbesserte JavaScript-Engine, die Rhino ersetzt. Nashorn bietet eine 2- bis 10-fache Leistungssteigerung, da der Code direkt im Speicher kompiliert und der Bytecode an die JVM übergeben wird. Dabei nutzt Nashorn das in Java 7 eingeführte invokedynamics-Feature für mehr Performance.
jjs – Kommandozeilenwerkzeug
Für die Nashorn-Engine liefert Java 8 das neue Kommandozeilen-Tool jjs, um JavaScript-Code direkt in der Konsole auszuführen.
JS-Datei interpretieren
Erstellen Sie die Datei sample.js im Ordner c:\JAVA.
sample.js
print('Hello World!');
Konsolenbefehl:
C:\JAVA>jjs sample.js
Ausgabe:
Hello World!
jjs im interaktiven Modus
Konsolenbefehl:
C:\JAVA>jjs
jjs> print("Hello, World!")
Hello, World!
jjs> quit()
>>
Argumente übergeben
Konsolenbefehl:
C:\JAVA> jjs -- a b c
jjs> print('letters: ' + arguments.join(", "))
letters: a, b, c
jjs>
JavaScript aus Java aufrufen
Mit ScriptEngineManager kann JavaScript-Code in Java aufgerufen und interpretiert werden.
Beispiel
Erstellen Sie das folgende Java-Programm unter C:\JAVA.
Java8Tester.java
Live Demoimport 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 = "Mahesh";
Integer result = null;
try {
nashorn.eval("print('" + name + "')");
result = (Integer) nashorn.eval("10 + 2");
} catch (ScriptException e) {
System.out.println("Fehler bei Script-Ausführung: " + e.getMessage());
}
System.out.println(result.toString());
}
}
Ergebnis prüfen
Kompilieren:
C:\JAVA>javac Java8Tester.java
Ausführen:
C:\JAVA>java Java8Tester
Erwartetes Ergebnis:
Mahesh 12
Java aus JavaScript aufrufen
Das folgende Beispiel zeigt, wie Java-Klassen in JavaScript importiert und genutzt werden.
Erstellen und speichern Sie sample.js unter c:\JAVA.
sample.js
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);
Konsolenbefehl:
C:\JAVA>jjs sample.js
Erwartete Ausgabe:
78952000000000000003.20
Java
- Java Operatoren meistern: Typen, Syntax und praktische Beispiele
- Java Kommentare: Typen, Verwendung und Best Practices
- Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
- Java Strings meistern: Erstellung, Methoden und Best Practices
- Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
- Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
- Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
- Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
- Java Assertions: Praktischer Leitfaden zur Fehlererkennung und Code-Reliabilität
- Java Vector verstehen: Verwendung, Funktionen und Vergleich mit ArrayList