Java - Nashorn JavaScript Engine

Ciao a tutti, aspiranti programmatori! Sono entusiasta di essere il vostro guida in questo affascinante viaggio nel mondo di Java e del Nashorn JavaScript Engine. Come persona che ha insegnato informatica per più di un decennio, posso assicurarvi che questa sarà un'esperienza divertente e illuminante. Allora, ci immeriamo!

Java - Nashorn JavaScript

Cos'è il Nashorn JavaScript Engine?

Nashorn (pronunciato "nass-horn") è un leggero e ad alte prestazioni motore JavaScript introdotto con Java 8. È come un ponte tra Java e JavaScript, permettendovi di eseguire codice JavaScript all'interno di un'applicazione Java. Molto cool, vero?

Un Po' di Storia

Nei miei primi giorni di insegnamento, dovevamo usare ambienti separati per Java e JavaScript. Era come cercare di fare un sandwich al burro di arachidi e marmellata con due piatti separati! Nashorn ha cambiato tutto questo, unendo questi due potenti linguaggi in una deliziosa combinazione.

Eseguire JavaScript tramite Strumenti da Linea di Comando

Iniziamo con qualcosa di semplice. Nashorn viene con uno strumento a riga di comando chiamato jjs che permette di eseguire JavaScript direttamente dal vostro terminale.

Esempio 1: Ciao, Nashorn!

Apri il prompt dei comandi e digita:

jjs
print("Ciao, Nashorn!");

Dovresti vedere "Ciao, Nashorn!" stampato sul tuo schermo. Congratulazioni! Hai appena eseguito il tuo primo codice JavaScript utilizzando Nashorn.

Eseguire JavaScript Direttamente nel Prompt dei Comandi

Puoi anche eseguire file JavaScript direttamente dalla riga di comando.

Esempio 2: Eseguire un File JavaScript

  1. Crea un file chiamato greet.js con il seguente contenuto:
var name = "Alice";
print("Ciao, " + name + "!");
  1. Esegui-lo utilizzando jjs:
jjs greet.js

Dovresti vedere "Ciao, Alice!" stampato sullo schermo.

Passare Argomenti a jjs

Nashorn permette di passare argomenti al tuo codice JavaScript, proprio come faresti con Java.

Esempio 3: Passare Argomenti

Crea un file chiamato greet_with_args.js:

var name = $ARG[0];
print("Ciao, " + name + "!");

Esegui-lo con un argomento:

jjs greet_with_args.js -- Bob

Dovresti vedere "Ciao, Bob!" stampato.

Chiamare JavaScript da Java

Ora, arriviamo alla parte davvero emozionante - chiamare JavaScript all'interno del tuo codice Java!

Esempio 4: Valutare JavaScript in Java

import javax.script.*;

public class JavaScriptInJava {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");

engine.eval("print('Ciao da JavaScript!');");
}
}

Quando esegui questo programma Java, stampa "Ciao da JavaScript!" utilizzando il motore Nashorn.

Chiamare Java da JavaScript

La vera potenza di Nashorn deriva dalla sua capacità di utilizzare classi e metodi Java all'interno del codice JavaScript.

Esempio 5: Utilizzare Classi Java in JavaScript

import javax.script.*;

public class JavaInJavaScript {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");

engine.eval("var ArrayList = Java.type('java.util.ArrayList');" +
"var list = new ArrayList();" +
"list.add('Ciao');" +
"list.add('Mondo');" +
"print(list);");
}
}

Questo codice crea un ArrayList Java, aggiunge elementi ad esso e lo stampa - tutto questo all'interno di JavaScript!

Funzionalità Avanzate

Nashorn offre molte funzionalità avanzate che lo rendono uno strumento potente per sviluppatori Java.

Esempio 6: Utilizzare Espressioni Lambda di Java 8

import javax.script.*;

public class LambdaInNashorn {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");

engine.eval("var list = [1, 2, 3, 4, 5];" +
"list.forEach(function(num) { print(num * 2); });");
}
}

Questo esempio dimostra come puoi utilizzare espressioni lambda di Java 8 all'interno del codice JavaScript eseguito su Nashorn.

Tabella dei Metodi

Ecco una tabella di alcuni metodi importanti che puoi utilizzare con Nashorn:

Metodo Descrizione
ScriptEngineManager.getEngineByName("nashorn") Ottieni il motore di script Nashorn
ScriptEngine.eval(String script) Valuta uno script JavaScript
ScriptEngine.put(String key, Object value) Imposta una variabile nel motore di script
ScriptEngine.get(String key) Ottieni una variabile dal motore di script
Invocable.invokeFunction(String name, Object... args) Invoca una funzione JavaScript

Conclusione

Ed eccoci qui, ragazzi! Abbiamo solo sfiorato ciò che Nashorn può fare, ma spero che questa introduzione abbia accenduto la vostra curiosità. Ricorda, la chiave per padroneggiare la programmazione è la pratica, quindi non aver paura di sperimentare con questi esempi e di creare i tuoi.

Come dico sempre ai miei studenti, programmare è come imparare a cavalcare una bicicletta - potrebbe sembrare intimidatorio all'inizio, ma con la pratica, sarai a zigzagare in un batter d'occhio. E chi sa? Forse un giorno insegninerai agli altri le meraviglie di Nashorn!

Continua a programmare, a imparare e, soprattutto, a divertirti! Fino alla prossima volta, questo è il tuo amichevole insegnante di informatica che firma off. Buon coding!

Credits: Image by storyset