Java コードから外部 JavaScript 関数を呼び出す
この記事では、Java プログラムに JavaScript ソースを組み込む方法と、Java コードから JavaScript 関数を呼び出す方法について説明します。
Java コードから外部 JavaScript 関数を呼び出す
Java で JavaScript ソースを呼び出すのは非常に簡単です。 JavaScript を使用する必要がある Java アプリケーションを開発する場合は、スクリプト ファイルを個別に作成し、それを Java ソースに含めて呼び出して、目的の機能を実行します。
例として、次のシナリオを見てみましょう。
まず、Java コードで呼び出される別の JavaScript ファイルで関数を定義する必要があります。 渡された 2つの値の加算などの算術タスクを実行する JavaScript ソースを作成しました。
例:
var myCalculations = new Object();
myCalculations.addition = function(v1, v2) v1 + v2;
この JavaScript ソースでは、新しいオブジェクト myCalculations
を作成しました。 そのオブジェクトには、引数として 2つの値を取り、それらを加算する定義済みの加算関数があります。
これが JavaScript ドキュメントになるため、このソースを拡張子 .js
で保存する必要があります。 そのスクリプトをロードしてオブジェクトを取得するには、ScriptEngineManager
の eval()
関数を使用する必要があります。
ScriptEngineManager
は、Java コードにインポートできるデフォルトの Java ライブラリです。 そのライブラリのインスタンスを使用して、スクリプトをロードできます。
以下に示すように、JavaScript ファイルをロードできます。
String javascriptPath = "drive:/folder/fileName.js";
engine.eval("load('" + javascriptPath + "')");
Object myCalculations = engine.get("myCalculations");
以下に示すように、目的の関数を名前で取得し、パラメーターを渡すことができます。
Object addingResult = inv.invokeMethod(myCalculations, "addition", x, y);
ScriptEngineManager
を使用して JavaScript ファイルを使用する完全な Java プログラムの例を次に示します。
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class Main {
public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
Invocable inv = (Invocable) engine;
String javascriptPath = "drive:/folder/fileName.js";
engine.eval("load('" + javascriptPath + "')");
Object myCalculations = engine.get("myCalculations");
int x = 10;
int y = 5;
Object addingResult = inv.invokeMethod(myCalculations, "addition", x, y);
System.out.println("Your addition result will be: " + addingResult);
}
}
出力:
Your addition result will be: 15
コードの説明:
- 上記の Java コードでは、スクリプトをロードするために、最初に便利なライブラリ
ScriptEngineManager
をインポートしました。 - メイン関数では、
ScriptEngineManager
のインスタンスを作成し、JavaScript の名前でスクリプト エンジンを定義しました。 - これで、JavaScript ファイルのパスが割り当てられる文字列変数が宣言されました。
- 次に、そのパスを
engine.eval()
メソッドでロードします。 - これで、JavaScript ファイルのオブジェクト
myCalculations
を呼び出し、それを使用してそのオブジェクトの関数を呼び出しました。 - 最後に、関数に 2つの整数型の値を渡し、Java のデフォルト関数
System.out.println("anything you want to print")
を使用してターミナルに結果を表示しました。