最近はスクリプト(主にActionScriptとPHP)ばかり触っていましたが、
Javaでもスクリプトが使えると聞いたことがあったのでさっそく調べてみました。
どうやらJava SE6からスクリプティング機能が付いたらしいです。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class HelloScripting {
public static void main(String[] arguments) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
try {
String script = "print('Hello Scripting')";
engine.eval(script);
} catch(ScriptException exception) {
exception.printStackTrace();
}
}
}
ScriptEngineManager:スクリプティング機能の開始点を提供するクラス。
ScriptEngine:スクリプトの実行エンジンを表すインタフェース。
ScriptException:スクリプティング機能によるエラーを表す例外クラス。
最初にjavax.script.ScriptEngineManagerクラスをインスタンス化して、ScriptEngineManagerクラスの getEngineByNameメソッドでJavaScriptの実行エンジンを取得しています。
それからevalメソッドでスクリプトを評価しています。このevalメソッドはFileReaderも引数に取れるので、外部においたjsファイルの内容も評価できます。
他にも、スクリプトからJavaのオブジェクトにアクセスしたり、逆にJavaからスクリプトのオブジェクトにアクセスすることもできるみたいです。
最近のJavaは周りからいろいろ取り込んでどんどん巨大になっていってますね。
使う側としては覚えることが増えて大変です;
参考:
Java SE6 じゃじゃ馬ならし 言語の中の言語 – Scripting