JavaScriptエンジン「Nashorn」を使ってjavaでjavascriptを実行

a0070 000234 JavaScriptエンジン「Nashorn」を使ってjavaでjavascriptを実行

JavaScriptエンジン「Nashorn」を使って、javaでjavascriptを実行するプログラムを簡単に記しておきます。

javascriptで文字を出力

javaファイル内でjavascriptを実行して、”Hello World!!”をコンソールに表示するプログラムです。

TestMain.java

public static void main(String[] args){

    // スクリプトエンジンマネージャの生成
	ScriptEngineManager engineManager = new ScriptEngineManager();

    // スクリプトエンジンの取得(Nashorn)
	ScriptEngine engine = engineManager.getEngineByName("nashorn");

    // スクリプトの実行
	engine.eval("print('Hello World!!');");

}

実行するスクリプトを変えたい場合は、engine.eval(“”)の中身を変更するだけで大丈夫です。


また、長くなる場合、インデントを付けたい場合は、プラス(+)でつなげると見やすくなります。

        engine.eval("var idiom = ['一','生','懸','命'];"
        		+ "for(i=0; i<4; i++){"
        		+ "print(idiom[i]);"
        		+ "}");


javascriptでjavaの関数を実行

javaファイル内のjavascriptでjavaの関数を実行するプログラムです。


まず、javascriptで実行させたい関数を用意します。

今回は”Hello World.”を出力する関数を作成しました。

Test.java

public class Test{
    public void getHello() {
    	System.out.println("Hello World");
    }
}


これをjavaファイル内で呼び出す場合、

public static void main(String[] args){
        Test test = new Test();
        test.getHello();
}

となりますが、javascriptで呼び出したい場合は以下の通りになります。


TestMain.java

public static void main(String[] args){

    // スクリプトエンジンマネージャの生成
	ScriptEngineManager engineManager = new ScriptEngineManager();

    // スクリプトエンジンの取得(Nashorn)
	ScriptEngine engine = engineManager.getEngineByName("nashorn");

    //ペアを設定
	engine.put("test", new Test());

    //スクリプトの実行
	engine.eval("test.getHello();");

}

javaでいう”Test test = new Test();”をengine.putで設定しています。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">