Comment puis-je utiliser Javascript en Java?

Je voulais construire un petit produit dans lequel je voulais donner une sorte de fonctionnalité dans laquelle l'utilisateur peut écrire une langue de script de type javascript.

Et aussi de javascript capable de construire des objets et des méthodes d'appel sur eux.

Existe-t-il un cadre pour cela?

Rhino est ce que vous recherchez.

Rhino est une application open source de JavaScript entièrement écrite en Java. Il est généralement intégré dans des applications Java pour fournir des scripts aux utilisateurs finaux.

Mise à jour: Maintenant, Nashorn , qui est plus performant JavaScript Engine pour Java, est disponible avec jdk8.

Java inclut un package d'extension de langage de script commençant par la version 6.

Consultez la documentation du projet Rhino pour intégrer un interpréteur JavaScript en Java .

[Modifier]

Voici un petit exemple de la façon dont vous pouvez exposer des objets Java à votre script interprété:

public class JS { public static void main(String args[]) throws Exception { ScriptEngine js = new ScriptEngineManager().getEngineByName("javascript"); Bindings bindings = js.getBindings(ScriptContext.ENGINE_SCOPE); bindings.put("stdout", System.out); js.eval("stdout.println(Math.cos(Math.PI));"); // Prints "-1.0" to the standard output stream. } } 

Vous pouvez utiliser ScriptEngine , exemple:

public class Main { public static void main(String[] args) { StringBuffer javascript = null; ScriptEngine runtime = null; try { runtime = new ScriptEngineManager().getEngineByName("javascript"); javascript = new StringBuffer(); javascript.append("1 + 1"); double result = (Double) runtime.eval(javascript.toString()); System.out.println("Result: " + result); } catch (Exception ex) { System.out.println(ex.getMessage()); } } }
public class Main { public static void main(String[] args) { StringBuffer javascript = null; ScriptEngine runtime = null; try { runtime = new ScriptEngineManager().getEngineByName("javascript"); javascript = new StringBuffer(); javascript.append("1 + 1"); double result = (Double) runtime.eval(javascript.toString()); System.out.println("Result: " + result); } catch (Exception ex) { System.out.println(ex.getMessage()); } } } 

Jetez un oeil à Rhino: http://www.mozilla.org/rhino/

Oracle Nashorn fournit une interopérabilité entre les mondes Java et JavaScript. Cela signifie que votre code Java peut appeler le code JavaScript, et vice versa. Didacticiel de base sur la compréhension de la façon d'écrire un programme en utilisant Oracle Nashorn.

Le moteur de JavaScript Rhino inclus dans JDK 6 est remplacé par un nouveau moteur appelé Nashorn pour JDK 8.

Le blog Oracle de Nashorn contient des nouvelles ainsi que des exemples de code source.