スクリプトエンジン利用の基本
では、実際に何かスクリプトを書いて試してみましょう。ごくシンプルに、標準出力にテキストを表示させてみることにします。
println("This is JavaScript.");
printlnを実行すると、コンソールに出力される。 |
こんなスクリプトを書いて実行してみると、標準出力に「This is JavaScript.」と出力されます。EclipseやNetBeansなどの開発環境からサーバを起動し実行した場合には、コンソール画面などに表示されるはずです。
中には、サンプルとして「alert("Hello");」というようなalert関数を実行させてみた人もいるかもしれません。これの結果は、ちょっと意外なことになります。「JavaScript.javax.script.ScriptException」といった例外が発生し実行されないのです。
なんでなんだ?と悩んだ人は、JavaScriptを少々勘違いしています。alertなどの関数は、JavaScript本体ではなく、Webブラウザに実装されたJavaScriptに用意されているものなのです。スクリプトエンジンによるJavaScriptの実行は、サーバサイドで行なわれます。クライアントであるWebブラウザ内で実行されるJavaScriptとは違うのです。この点を勘違いしないようにしてください。
では、スクリプトエンジンを利用している部分の処理を見てみましょう。スクリプトエンジンは、ScriptEngineManagerと呼ばれるクラスを用意し、そこからScriptEngineのインスタンスとして取得をします。
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
それを行なっているのがこの部分です。ここではScriptEngineManagerのgetEngineByNameというメソッドを使い、JavaScriptのScriptEngineを取得しています。――こうして取得したScriptEngineの「eval」というメソッドを呼び出すと、スクリプトを実行させることができます。
try {
engine.eval(script);
} catch(ScriptException ex){……略……}
このevalは、引数にスクリプトのStringを渡すと、それを評価して実行します。この際、ScriptExceptionという例外を発生させる場合があるため、try内で実行するなどの対応をしておく必要があります。