web-dev-qa-db-ja.com

JavaでJavaScriptを使用するにはどうすればよいですか?

ユーザーがスクリプト言語の種類のJavaScriptを記述できるような機能を提供したい小さな製品を作りたかったのです。

また、オブジェクトを構築し、それらのメソッドを呼び出すことができるJavaScriptから。

このためのフレームワークはありますか?

39
Dungeon Hunter

Rhino はあなたが探しているものです。

Rhinoは、完全にJavaで記述されたJavaScriptのオープンソース実装です。通常、Javaアプリケーションに埋め込まれて、エンドユーザーにスクリプトを提供します。

更新:現在、 Nashorn (Java用のJavaScriptエンジンのパフォーマンスが高い)がjdk8で使用可能になりました。

37
kunal

Javaには、バージョン6以降の スクリプト言語拡張パッケージ が含まれています。

JavaでJavaScriptインタープリターを埋め込むためのRhinoプロジェクトドキュメント を参照してください。

[編集]

以下に、Javaオブジェクトを解釈済みスクリプトに公開する方法の簡単な例を示します。

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

ScriptEngineを使用できます。例:


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

Rhinoをご覧ください: http://www.mozilla.org/rhino/

6
derFunk

Oracle Nashornは、JavaとJavaScriptの世界の間の相互運用性を提供します。つまり、Java =コードはJavaScriptコードを呼び出すことができ、その逆も同様です 基本チュートリアル Oracle Nashornを使用してプログラムを記述する方法を理解します。

6
pardeep131085

JDK 6に含まれていたRhino JavaScriptエンジンは、JDK 8のNashornと呼ばれる新しいエンジンに置き換えられています。

NashornのOracleブログ には、ニュースとソースコードのサンプルが含まれています。

4

私はこの質問に対して何か新しいことに答えたかったのです-J2V8

著者のIan Bullは、「RhinoとNashornは2つの一般的なJavaScriptランタイムですが、これらは多くの分野での要件を満たしていませんでした。

どちらも「Primitives」をサポートしていません。これらのプラットフォームとのすべての対話には、Integer、Double、Booleanなどのラッパークラスが必要です。 NashornはAndroidではサポートされていません。 Rhinoコンパイラーの最適化はAndroidではサポートされていません。どちらのエンジンもAndroidでのリモートデバッグをサポートしていません。 ""

高効率Java&JavaScript統合

Githubリンク

0
Ashok M A