Java8に同梱されているJavaScript Engine Nashornの使い方

Java8から新しいJavaScript Engine であるNashornが同梱されています。詳細は「Oracle Blogs 日本語のまとめ: [Java, JavaScript] Oracle Nashorn: A Next-Generation JavaScript Engine for the JVM」が参考になります。

さっそく動かしてみました。次のJavaScriptプログラムをhello.jsという名前で保存します。

var hello = function() {
  print("Hello Nashorn!");
};
hello();

Java8にはjjsコマンドというJavaScript実行用コマンドがあるので、これで実行できます。

$ jjs hello.js 
Hello Nashorn!

JavaScriptのプログラムをJavaプログラム内で利用するには次のようにします。簡単ですね。ここでは、js_srcにJavaScriptプログラムを設定してあります。

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
 
public class Sample {
  public static String js_src = "function sum(a, b) { return a+b; }";
  public static void main(String... args) throws Throwable {
    ScriptEngineManager engineManager = new ScriptEngineManager();
    ScriptEngine engine = engineManager.getEngineByName("nashorn");
    engine.eval(js_src);
    System.out.println(engine.eval("sum(2, 5);"));
  }
}

次のようにコンパイルして実行できます。

$ javac Sample.java
$ java Sample
7

Nashornの用途としては、Javaアプリで拡張機能をJavaScriptで記述して使えるようにしておきたい、という感じだと思うのですが、node.jsみたいにサーバサイドで使えるようになると凄いのですが、どうなのでしょう。クライアントサイドで使えるためにはWebブラウザのエンジンとして搭載される必要がありそうですが、そちらの話題はないようなので、Java専用の特別なエンジンという位置づけで利用されることになりそうです。

同じタグの記事: Java
同じタグの記事: JavaScript
同じタグの記事: program
同じカテゴリの記事: Java
関連書籍: Java
関連書籍: JavaScript
関連書籍: program