読者です 読者をやめる 読者になる 読者になる

ゲンゾウ用ポストイット

Java、Groovy、Linux関連の備忘録

rhino実行環境構築 & commons-lang呼んでみる

以下のフレームワークを使用した開発が一段落したので、次の案件の調査開始。
blanco Framework

intra-martというサーバサイドjavascriptのパッケージカスタマイズ。
システム基盤の株式会社NTTデータイントラマート

一応javascriptで業務処理ゴリゴリ、ということで開発支援用のスクリプトもせっかくなのでjavascriptでと、rhinoをセットアップ。

セットアップ

Rhino のダウンロードから、rhinoのパッケージをダウンロード。
解凍したフォルダ内のjs.jarを適当な場所に置くのだが、Groovyに似せて

~/.rhino/lib

何かにおいてみたりする。

加えてパスの通った場所に以下のようなbashスクリプトを配置。

#!/bin/bash
libs=""
for f in `\ls ~/.rhino/lib/*.jar`
do
    libs=$libs:$f
done
java -cp $libs org.mozilla.javascript.tools.shell.Main $*

実行

早速実行してみる。

test1.js
#!/usr/bin/env rhino
print('test')
$ rhino test1.js
test

$ chmod 700 ./test1.js
$ ./test1.js
test

おお!思った以上に実効速度が早くてびっくりした。

commons-langを呼んでみる。

commons-langも呼んでみる。
まずはjarをダウンロード。(Grapeは使えないもんねw)
ほいで、ゲットした[commons-lang-2.4.jar]を~/.rhino/libディレクトリへ。

以下のようなスクリプトを作成し、実行してみる。

test2.js
#!/usr/bin/env rhino
importPackage(Packages.org.apache.commons.lang)

var list = ["1", "2", "3"]
var text = StringUtils.join(list, ":")
print(text)
$ rhino test2.js
1:2:3

$ chmod 700 ./test2.js
$ ./test2.js
1:2:3

あ、結構いいかも。気に入ってきた。

test3.js
#!/usr/bin/env rhino
importPackage(Packages.org.apache.commons.lang)

var list = [1, 2, 3]
list.each = function(f){
    for( var i = 0; i < list.length; i++ )
        f(list[i])
}

list.each(function(el){
    print("[" + StringUtils.center(el * 2, 10) + "]")
})
$ ./test3.js
[    2     ]
[    4     ]
[    6     ]

追記

~/.rhino/libに物を置いていないときは早い。
ここに配置するjarファイルが増えるごとにかなりもっさりしてくる。
Groovyの重さも同じような原因か?

広告を非表示にする