Java - Moteur JavaScript Nashorn

Bonjour à tous, aspirants programmeurs ! Je suis ravi de vous guider dans ce fascinant voyage dans le monde de Java et du Moteur JavaScript Nashorn. Ayant enseigné l'informatique pendant plus d'une décennie, je peux vous assurer que cela va être une expérience pleine de fun et d'éclairage. Alors, plongeons-y !

Java - Nashorn JavaScript

Qu'est-ce que le Moteur JavaScript Nashorn ?

Nashorn (prononcé "nass-horn") est un moteur JavaScript léger et haute performance qui a été introduit avec Java 8. Il s'agit d'un pont entre Java et JavaScript, permettant d'exécuter du code JavaScript au sein d'une application Java. C'est cool, non ?

Un Petit Historique

Dans mes premiers jours d'enseignement, nous devions utiliser des environnements séparés pour Java et JavaScript. C'était comme essayer de faire un sandwich au beurre d'arachide et à la gelée avec deux assiettes séparées ! Nashorn a changé tout cela, en reliant ces deux langues puissantes en une délicieuse combinaison.

Exécuter JavaScript via les Outils en Ligne de Commande

Commençons par quelque chose de simple. Nashorn est fourni avec un outil en ligne de commande appelé jjs qui permet d'exécuter du JavaScript directement depuis votre terminal.

Exemple 1 : Hello, Nashorn !

Ouvrez votre invite de commande et tapez :

jjs
print("Hello, Nashorn !");

Vous devriez voir "Hello, Nashorn !" affiché à l'écran. Félicitations ! Vous avez juste exécuté votre premier code JavaScript utilisant Nashorn.

Exécuter JavaScript Directement dans l'Invite de Commande

Vous pouvez également exécuter des fichiers JavaScript directement depuis la ligne de commande.

Exemple 2 : Exécuter un Fichier JavaScript

  1. Créez un fichier nommé greet.js avec le contenu suivant :
var name = "Alice";
print("Hello, " + name + " !");
  1. Exécutez-le en utilisant jjs :
jjs greet.js

Vous devriez voir "Hello, Alice !" affiché à l'écran.

Passer des Arguments à jjs

Nashorn permet de passer des arguments à votre code JavaScript, tout comme avec Java.

Exemple 3 : Passer des Arguments

Créez un fichier nommé greet_with_args.js :

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

Exécutez-le avec un argument :

jjs greet_with_args.js -- Bob

Vous devriez voir "Hello, Bob !" affiché.

Appeler JavaScript depuis Java

Maintenant, passons à la partie vraiment excitante - appeler JavaScript depuis votre code Java !

Exemple 4 : Évaluer JavaScript dans 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('Hello from JavaScript !');");
}
}

Lorsque vous exécutez ce programme Java, il affichera "Hello from JavaScript !" en utilisant le moteur Nashorn.

Appeler Java depuis JavaScript

La véritable puissance de Nashorn vient de sa capacité à utiliser des classes et des méthodes Java dans du code JavaScript.

Exemple 5 : Utiliser des Classes Java dans 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('Hello');" +
"list.add('World');" +
"print(list);");
}
}

Ce code crée une ArrayList Java, ajoute des éléments à celle-ci et l'affiche - tout cela depuis JavaScript !

Fonctionnalités Avancées

Nashorn offre de nombreuses fonctionnalités avancées qui le rendent un outil puissant pour les développeurs Java.

Exemple 6 : Utiliser les Expressions Lambda de 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); });");
}
}

Cet exemple montre comment vous pouvez utiliser des expressions lambda de Java 8 dans du code JavaScript s'exécutant sur Nashorn.

Table des Méthodes

Voici une table des quelques méthodes importantes que vous pouvez utiliser avec Nashorn :

Méthode Description
ScriptEngineManager.getEngineByName("nashorn") Obtenir le moteur de script Nashorn
ScriptEngine.eval(String script) Évaluer un script JavaScript
ScriptEngine.put(String key, Object value) Définir une variable dans le moteur de script
ScriptEngine.get(String key) Obtenir une variable du moteur de script
Invocable.invokeFunction(String name, Object... args) Invoker une fonction JavaScript

Conclusion

Et voilà, mes amis ! Nous avons apenas effleuré ce que Nashorn peut faire, mais j'espère que cette introduction a allumé votre curiosité. N'oubliez pas, la clé pour maîtriser la programmation est la pratique, donc n'hésitez pas à expérimenter avec ces exemples et à créer les vôtres.

Comme je le dis toujours à mes étudiants, programmer est comme apprendre à骑 un vélo - cela peut sembler effrayant au début, mais avec de la pratique, vous serez en vadrouille en un rien de temps. Et qui sait ? Peut-être qu'un jour vous enseignerez à d'autres les merveilles de Nashorn !

Continuez à coder, à apprendre, et surtout, amusez-vous ! Jusqu'à la prochaine fois, c'est votre enseignant de informatique de quartier qui s'efface. Bon codage !

Credits: Image by storyset