Java 8 - Nashorn JavaScript

Mit Java 8, Nashorn, wird eine stark verbesserte Javascript-Engine eingeführt, die das vorhandene Rhino ersetzt. Nashorn bietet eine zwei- bis zehnmal bessere Leistung, da es den Code direkt im Speicher kompiliert und den Bytecode an JVM weitergibt. Nashorn verwendet die in Java 7 eingeführte Funktion zum Aufrufen der Dynamik, um die Leistung zu verbessern.

jjs

Für die Nashorn-Engine führt JAVA 8 ein neues Befehlszeilentool ein: jjs, um Javascript-Codes an der Konsole auszuführen.

Js-Datei interpretieren

Erstellen und speichern Sie die Datei sample.js im Ordner c: \> JAVA.

sample.js

print('Hello World!');

Öffnen Sie die Konsole und verwenden Sie den folgenden Befehl.

C:\JAVA>jjs sample.js

Es wird die folgende Ausgabe erzeugt:

Hello World!

jjs im interaktiven Modus

Öffnen Sie die Konsole und verwenden Sie den folgenden Befehl.

C:\JAVA>jjs
jjs> print("Hello, World!")
Hello, World!
jjs> quit()
>>

Argumente übergeben

Öffnen Sie die Konsole und verwenden Sie den folgenden Befehl.

C:\JAVA> jjs -- a b c
jjs> print('letters: ' +arguments.join(", "))
letters: a, b, c
jjs>

JavaScript von Java aus aufrufen

Mit ScriptEngineManager kann JavaScript-Code in Java aufgerufen und interpretiert werden.

Beispiel

Erstellen Sie das folgende Java-Programm mit einem Editor Ihrer Wahl, z. B. in C: \> JAVA.

Java8Tester.java

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 = "Mahesh";
      Integer result = null;
      
      try {
         nashorn.eval("print('" + name + "')");
         result = (Integer) nashorn.eval("10 + 2");
         
      } catch(ScriptException e) {
         System.out.println("Error executing script: "+ e.getMessage());
      }
      System.out.println(result.toString());
   }
}

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt -

C:\JAVA>javac Java8Tester.java

Führen Sie nun den Java8Tester wie folgt aus:

C:\JAVA>java Java8Tester

Es sollte das folgende Ergebnis liefern -

Mahesh
12

Java über JavaScript aufrufen

Im folgenden Beispiel wird erläutert, wie Sie Java-Klassen in Java-Skripten importieren und verwenden.

Erstellen und speichern sample.js im Ordner 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);

Öffnen Sie die Konsole und verwenden Sie den folgenden Befehl.

C:\JAVA>jjs sample.js

Es sollte die folgende Ausgabe erzeugen -

78952000000000000003.20