English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

教程基础Java

Controllo dei flussi Java

Array Java

Java orientata agli oggetti (I)

Java orientata agli oggetti (II)

Java orientata agli oggetti (III)

Gestione delle eccezioni Java

List Java

Queue (coda) Java

Map di Java

Set di Java

Input/Output (I/O) Java

Reader/Writer Java

Altri argomenti Java

Java 8 Nashorn JavaScript

Nuove funzionalità Java 8

Nashorn è un motore JavaScript.

Il motore JavaScript Nashorn non è più disponibile nella Java 15.

Questo è stato etichettato come non più disponibile nella Java 11:

@deprecated (perRimozione = true)

Dalla JDK 1.8, Nashorn ha sostituito Rhino (JDK 1.6, JDK 1.7) come motore JavaScript integrato in Java. Nashorn supporta completamente la specifica ECMAScript 5.1 e alcune estensioni. Utilizza le nuove caratteristiche linguistiche basate su JSR 292, tra cui l'instruzione invokedynamic introdotta nella JDK 7, per compilare JavaScript in bytecode Java.

Confrontato con l'implementazione precedente di Rhino, questo offre un miglioramento delle prestazioni di 2 a 10 volte.

jjs

jjs è uno strumento della riga di comando basato sul motore Nashorn. Accetta alcuni script JavaScript come parametri e li esegue.

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

print('Ciao Mondo!');

Apri la console e inserisci il seguente comando:

$ jjs sample.js

Il risultato di output del programma sopra è:

Hello World!

jjs Programmatore Interattivo

Apri la console e inserisci il seguente comando:

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

Passare i parametri

Apri la console e inserisci il seguente comando:

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

Chiamare JavaScript in Java

Utilizzando ScriptEngineManager, il codice JavaScript può essere eseguito in Java, come nell'esempio seguente:

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

Esegui lo script sopra, il risultato di output è:

$ javac Java8Tester.java 
$ java Java8Tester
w3codebox
12

Chiamare Java in JavaScript

Esempio seguente dimostra come fare riferimento a 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 il comando jjs per eseguire lo script sopra, i risultati di output sono i seguenti:

$ jjs sample.js
78952000000000002017.94

Nuove funzionalità Java 8