Le projet a été mis en place à l'origine par Oracle qui l'a ensuite ouvert à la communauté via OpenJDK.
Il permet aux développeurs d'intégrer le code JavaScript à l'intérieur de leurs applications Java et même d'utiliser les classes et méthodes Java à partir de leur code JavaScript. Il peut être conçu comme un substitut au moteur JavaScript V8 de Google. C'est un successeur de l'environnement d'exécution Rhino qui était fourni avec les versions antérieures du JDK. Nashorn est écrit à partir de zéro en utilisant les nouvelles fonctionnalités du langage comme JSR 292 (Supporting Dynamically Typed Languages) et invokedynamic.
Actuellement, Nashorn supporte la spécification ECMAScript 5.1 et le support de ECMAScript 6 est bien entendu en cours.
Voici un exemple qui utilise la classe Java HashMap en ligne de commande avec l'outil jjs :
Code javascript : | Sélectionner tout |
1 2 3 4 5 6 7 | jjs> var HashMap = Java.type("java.util.HashMap") jjs> var userAndAge = new HashMap() jjs> userAndAge.put("shekhar",32) null jjs> userAndAge.put("rahul",33) null jjs> userAndAge.get("shekhar") |
Vous pouvez donc utiliser notamment :
- des classes ;
- des méthodes statiques ;
- des bibliothèques JavaScript externes ;
- des scripts personnalisés en utilisant les caractéristiques d'un shell Unix ;
- les nouveautés de Java 8 ;
- etc.
Vous pouvez également utiliser Nashorn dans du code Java :
Code java : | Sélectionner tout |
1 2 3 4 5 6 | public static void main(String[] args) throws ScriptException { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine nashorn = manager.getEngineByName("nashorn"); Integer eval = (Integer) nashorn.eval("10 + 20"); System.out.println(eval); } |
Pour plus de détails, n'hésitez pas à lire ce tutoriel sur GitHub.
Le blog officiel.
Et vous ?
Que pensez-vous de ce projet ?
Connaissez-vous des outils similaires ?
Découvrez également les cours et tutoriels Java de Developpez.com ainsi que ceux sur le JavaScript.