NashornがOpenJDKのリポジトリに入ってたのでビルドしてみた

最近、新聞で取り上げられるなど話題(汗)のJava界隈の話。

何気なく、nashornの近況をググってみたら、
nashornがすでにOpenJDKに入れられてた。
ををっ!

自分の想像していた(根拠なし)より、ずっと早くOpenJDK入りしてた。
Nashornの2012/12/21のblogにはリポジトリのURLが載ってる。
参照:https://blogs.oracle.com/nashorn/entry/open_for_business

nashornのリポジトリのログ見る限り、b65とか書いてあったので、 自分が先日確認した時点(b72)のbinary配布のjdk8に含まれているかと思って
インストールしてみた。

サンプルコード:
"use strict";
(function() {
 // バージョン取得
 var engineName = "nashorn";
 var key = javax.script.ScriptEngine.ENGINE_VERSION;
 var m = new javax.script.ScriptEngineManager();
 var engine = m.getEngineByName(engineName);
 var version1 = engine.getFactory().getParameter(key);
 var version2 = engine.getFactory().getLanguageVersion();
 print("[DEBUG]\r\n"
   + "   engine version   = [" + version1 + "]\r\n"
   + "   language version = [" + version2 + "]\r\n");
 var names = engine.getFactory().getNames();
 var temp = [];
 for (var i = 0; i < names.size(); i++) {
  temp.push(names.get(i));
 }
 print("[DEBUG] javascript engine names=" + temp.join(", "));
})();
結果:
java build 1.8.0-ea-b72 に入っているjrunscriptで実行した結果(Rhionで実行?)
[DEBUG]
   engine version   = [1.7 release 3 PRERELEASE]
   language version = [1.8]
[DEBUG] javascript engine names=js, rhino, JavaScript, javascript, ECMAScript, ecmascript

まだ、nashornは入っていなささそうです?

ショーガナイので、普段はやらないけどOpenJDKのnashornのリポジトリから
ソースを入手し、やっつけビルドしてみた。
ビルド方法は超簡単。antするだけだった。

一部ファイルが足りないと言われたので、それを探してくるのに手間取ったけどビルドは成功。
(単にMercurialの見方がわからくて躓いたとも言う。)
んー、ビルド中なんかワーニング出てたけど...まあいいや。
javadoc作成に失敗したけど...まあいいや。
一応nashorn.jarはできた。
...こまけぇこたぁいいんだよ!!

上記のサンプルコードを実行してみた。

結果:
nashornで実行
[DEBUG]
   engine version   = [0.1]
   language version = [ECMA - 262 Edition 5.1]

[DEBUG] javascript engine names=nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript

動いた!やっぱバージョン表示違うね。
というか、そもそもバージョン表示する対象が別物にも見える。
jdk8のlanguage versionてjavaのバージョンで、
nashornの方はちゃんとECMAScriptのバージョンになっている?

あと、JDK8同梱のRhinoではCP938の文字コードでソースを書くと実行できるのだけど、
nashornでは、UTF-8でソース書かないとダメでした。


最近、node.jsをいじっているので、できたら、JavaOneで発表されてたnode.jarとか
実行してみたかったのだけど、ちょっと探した限りnode.jarは見つけられなかった。
(まだ一般公開していないのかしら?)取りあえず今回はここまで。


巷ではHTML5はよく聞いたけど、ECMAScript5なんて気にも留めたこと無かった。
色々標準関数追加されてるのね。知りませんでした。
Object.create()とか「O'Reilly ステートフルjavascript」に出てきた気がするので、
後で調べてみるか。
手元のjavascriptのポケットリファレンスにはこの関数群は書いてないので、
買いなおさないと。

2013/1/31 に JJUG Java Naight Semminarがある。ネタはHTML5とJavaらしいけど、
nashornの話も話題に上がるのだろうか?参加を申し込んでいるので、ちょっと期待。


コメント

このブログの人気の投稿

日食ツアーその後

Javaのクロージャをいじってみた。(1)