web-dev-qa-db-fra.com

Comment 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 un langage JavaScript de type script.

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

Y a-t-il un cadre pour cela?

38
Dungeon Hunter

Rhino est ce que vous recherchez.

Rhino est une implémentation open-source de JavaScript entièrement écrit en Java. Il est généralement intégré aux applications Java pour fournir script pour les utilisateurs finaux.

Mise à jour: Now Nashorn , qui est un moteur JavaScript plus performant pour Java, est disponible avec jdk8. 

35
kunal

Java inclut un package d'extension de langage de script à partir de la version 6.

Voir la documentation du projet Rhino pour l'intégration d'un interpréteur JavaScript dans Java .

[Modifier]

Voici un petit exemple de la manière 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.
  }
}
15
maerics

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());
        }
    }
}
11
Eder
6
derFunk

Oracle Nashorn assure l'interopérabilité entre les mondes Java et JavaScript. Cela signifie que votre code Java peut appeler du code JavaScript, et inversement . Tutoriel de base pour comprendre comment écrire un programme avec Oracle Nashorn.

6
pardeep131085

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

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

4
Richard Chambers

Je voulais juste répondre à quelque chose de nouveau pour cette question - J2V8.

L'auteur, Ian Bull, a déclaré: "Rhino et Nashorn sont deux versions courantes de JavaScript, mais elles ne répondaient pas à nos exigences dans plusieurs domaines:

Ni l’appui «Primitives». Toutes les interactions avec ces plates-formes nécessitent des classes wrapper telles que Integer, Double ou Boolean . Nashorn n'est pas pris en charge sur Android . Les optimisations du compilateur Rhino ne sont pas prises en charge sur Android . Aucun moteur ne prend en charge le débogage à distance sous Android. " "

Intégration très efficace de Java et JavaScript

Lien Github

0
Ashok M A