3

ここでドキュメントを読みました:Mozillaの「Scripting Java」

これらの例も私の質問には答えません: Rhino Liveconnect の例

たとえば、私のjavascriptファイルは「java.lang」の場所をどのように知っていますか? もちろん、Rhino シェル内で動作しますが、シェルからではなく、javascript ファイル内から Java コードを実行する必要があります。ダウンロードしたソースに .java ファイルしか表示されません。

サーバーサイドのnodejs javascriptでサーバーサイドのJavaメソッドを呼び出したいです。javascript が java を理解できるようにするために、Rhino を起動する必要はありませんか?

編集: @eee したがって、正しく理解できれば、Rhino では実際に javascript から Java を実行することはできません。すべての javascript を Java .class ファイルに変換するだけです...結局のところ、Java ファイル内で実行する必要がありますか? そのようなものは、javascript から Java を呼び出す目的を無効にします。全体的なアイデアは、新しい Java ライブラリを構築することなく、JavaScript コード内から任意の Java コードを呼び出すことができるようにすることです。

それってRhinoが使えないってことじゃないの?Nodejs は V8 エンジンを使用して JavaScript を実行するため、単一の JavaScript ファイルを V8 と Rhino の両方で使用することはできないと想定しています... Java メソッドを呼び出して、Rhino を起動し、それらの呼び出しを変換できることを望んでいました。ジャバに。Java 自体は、変数にデータを入力して返します。

@Peter: なぜ http 呼び出しを行うのですか? 今のところ、JavaScript と Java の両方が同じサーバー上にあります。とにかく、あなたが言っていることは、Rhino を必要としないということでしょうか? 一連の .class ファイルを作成してから、'java myfile.class -v "firstvar" -x "secondvar"' を呼び出します。正しく理解できていますか?

4

1 に答える 1

3

Rhinoでは、実際に JavaScript スクリプトから Java を実行できます。やることはあまりありません。LiveConnect を使用すると、java.* パッケージ内のすべてにアクセスできます。独自のコードにアクセスできるようにする場合は、アプリケーションのクラスパスにクラス (コンパイルされた Java コード) を追加するだけです。

サーバーサイドのnodejs javascriptでサーバーサイドのJavaメソッドを呼び出したいです。

Rhino は JavaScript インタープリターです。つまり、JavaScript コードを実行します。V8 は NodeJS の JavaScript インタープリターです。Rhino または V8 のいずれかを選択する必要があります。V8 は C++ であり、NodeJS に深く組み込まれています。Rhino は Java であり、V8 を簡単に置き換えることはできません。NodeJS を Rhino に移植する (長期的な) プロジェクトがありますが、参加する準備ができていない限り、それを待ってはいけません。

于 2011-06-17T18:08:33.730 に答える