2011-01-17 9 views
2

現在、私は自分のアプリケーションでRhinoを使用しています。私はいくつかのJavaScript Antを評価する必要があります(JavaScriptを使用してJavaクラスを使用する必要はありません)。しかし、それは遅すぎる。多分、JavaアプリケーションでV8を使用する方法はありますか?Java用JavaScriptエンジン

更新:

私は、異なる種類のオブジェクトの大規模なコレクションを持っています。これらのオブジェクトを検証し、必要なフォームに変換するための柔軟なメカニズムが必要です(実行時の検証と変換のルールを変更できる、つまりJavaでこれらのルールをハードコードするのは適切ではありません)。 これですべてがRhino上で動作しますが、パフォーマンスは悪いです。私はNodeJSを使うことを考えましたが、それとのコミュニケーション、プロセスを介したオブジェクトの直列化などと思われます - これらはすべて非常にコストがかかるでしょう。

答えて

4
  1. あなたが本当にevalが必要絶対にわからていますか?実際にはevalが必要な場所はごくわずかです。

  2. ProcessBuilderを使用して、基盤となるシステムで利用可能なプロセスにシェルすることができます。私はそれがRhinoよりも速いという確信を持っています。evalが低いです。

  3. NodeJSプロセスは、ソケット経由で通信するアプリケーションの横に置いておくことができます。それはかもしれませんは、でスピードレースに勝ちます。

実際に達成しようとしていることの例を挙げると、人々がより良いアプローチを思いつくことができるかもしれません。

+0

ありがとうございました。私は詳細を追加しました。 – chardex

1

javax.script.ScriptEngineをご覧ください。これは標準のJavaパッケージで、エバールとデータバインディングが可能です:

ScriptEngineManager engineMgr = new ScriptEngineManager(); 
ScriptEngine engine = engineMgr.getEngineByName("JavaScript"); 
Bindings bindings = engine.createBindings(); 

String script = "javascript to eval goes here....."; 
bindings.put(varName1, value1); 
bindings.put(varName2, value2); 

Object obj = engine.eval(script, bindings) 
+2

はい、これはRhinoを使用する方法です... –

関連する問題