Latest web development tutorials

Java 8 Nashorn JavaScript

Java 8 nuove funzionalità Java 8 nuove funzionalità


Nashorn un motore JavaScript.

JDK 1.8 fin dall'inizio, Nashorn sostituito Rhino (JDK 1.6, JDK1.7) è diventato Java incorporato motore JavaScript. Nashorn supporta pienamente ECMAScript 5.1 specifica e alcune estensioni. Si basa sull'uso della nuova lingua dispone JSR 292, che contiene introdotto in JDK 7 in invokedynamic, il JavaScript compilato in codice Java byte.

Rispetto al precedente realizzazione di Rhino, che ha portato 2-10 volte le prestazioni.


JJs

motore JJs Nashorn è uno strumento da riga di comando basata. Accetta parte del codice sorgente JavaScript per i parametri, ed esegue il codice sorgente.

Ad esempio, creiamo il file sample.js con il seguente contenuto:

print('Hello World!');

Aprire la console, inserire il seguente comando:

$ jjs sample.js

L'output del programma di cui sopra è:

Hello World!

JJs programmazione interattiva

Aprire la console, inserire il seguente comando:

$ jjs
jjs> print("Hello, World!")
Hello, World!
jjs> quit()
>>

Passaggio di parametri

Aprire la console, inserire il seguente comando:

$ jjs -- a b c
jjs> print('字母: ' +arguments.join(", "))
字母: a, b, c
jjs> 

Java chiamando JavaScript

Utilizzare ScriptEngineManager, codice JavaScript può essere eseguito in Java, gli esempi sono i seguenti:

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 = "w3big";
      Integer result = null;
      
      try {
         nashorn.eval("print('" + name + "')");
         result = (Integer) nashorn.eval("10 + 2");
         
      }catch(ScriptException e){
         System.out.println("执行脚本错误: "+ e.getMessage());
      }
      
      System.out.println(result.toString());
   }
}

L'attuazione del script di cui sopra, l'uscita è:

$ javac Java8Tester.java 
$ java Java8Tester
w3big
12


JavaScript Calling Java

L'esempio seguente mostra come fare riferimento le 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 script di comando JJs sopra, i risultati di output sono i seguenti:

$ jjs sample.js
78952000000000002017.94

Java 8 nuove funzionalità Java 8 nuove funzionalità