Java 8 - Nashorn JavaScript

Wraz z Javą 8, Nashorn, wprowadzono znacznie ulepszony silnik javascript, który zastępuje istniejący Rhino. Nashorn zapewnia od 2 do 10 razy lepszą wydajność, ponieważ bezpośrednio kompiluje kod w pamięci i przekazuje kod bajtowy do maszyny JVM. Nashorn używa funkcji dynamiki wywołania, wprowadzonej w Javie 7 w celu poprawy wydajności.

jjs

W przypadku silnika Nashorn, JAVA 8 wprowadza nowe narzędzie wiersza poleceń, jjs, do wykonywania kodów javascript w konsoli.

Interpretowanie pliku js

Utwórz i zapisz plik sample.js w folderze c: \> JAVA.

sample.js

print('Hello World!');

Otwórz konsolę i użyj następującego polecenia.

C:\JAVA>jjs sample.js

Wygeneruje następujący wynik:

Hello World!

jjs w trybie interaktywnym

Otwórz konsolę i użyj następującego polecenia.

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

Przekaż argumenty

Otwórz konsolę i użyj następującego polecenia.

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

Wywołanie JavaScript z Java

Za pomocą ScriptEngineManager można wywoływać i interpretować kod JavaScript w języku Java.

Przykład

Utwórz następujący program Java przy użyciu dowolnego wybranego edytora, powiedzmy, 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());
   }
}

Sprawdź wynik

Skompiluj klasę przy użyciu javac kompilator w następujący sposób -

C:\JAVA>javac Java8Tester.java

Teraz uruchom Java8Tester w następujący sposób -

C:\JAVA>java Java8Tester

Powinien dać następujący wynik -

Mahesh
12

Wywołanie Java z JavaScript

Poniższy przykład wyjaśnia, jak importować i używać klas Java w skrypcie java.

Utwórz i zapisz sample.js w folderze 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);

Otwórz konsolę i użyj następującego polecenia.

C:\JAVA>jjs sample.js

Powinien dać następujący wynik -

78952000000000000003.20