オライリーの JavaScript 第6版 を図書館から借りて、 いろいろ調べている。 12 章の JavaScript のサーバサイド JavaScriptは知らないので、少し調べてみた。
同書ではサーバサイド JavaScript が使えるアプリケーションとして、Rhino と Node を紹介している。 Node はソースコードからのコンパイルが必要で、UNIX 系でのみ動作するようだ。 私は最近 UNIX から遠ざかっているので、今回は Rhino のみを調べた。
Rhino はリノと読むのか、ライノと読むのかはわからない。Wikipedia によればライノーである。 普通、英語圏で rhino といえばサイのことである。同じく Wikipedia によれば、 オライリーの JavaScript 本に描かれたのがサイであったことが名前の由来ということだ。
Rhino は JavaScript インタプリタであり、Java で記述されている。 JavaScript で書かれたスクリプトから Java プロパティを参照・更新することや Java メソッドを呼び出したりすることができる。
ある WEB のページでは、JDK 6 以上であればもれなく Rhino がついてくるような書き方がされているが、 実際にはそうではない。同書によるダウンロード先は http://www.mozilla.org/rhino/ である。 このページで rhino1_7R4.zip をダウンロードし、これを解凍すると rhino1_7R4 というフォルダができる。
私は Windows を使っているので、c:\program files\java 配下においた。 そして、システムの環境変数を新たに作ったり変更したりする。
set RHINO_HOME = C:\program files\java\rhino1_7R4
set CLASSPATH = %CLASSPATH%;%RHINO_HOME%\js.jar
Windows で対話型の Rhino を起動する方法は次のいずれかである。同書では前者が紹介されている。
java -jar "%RHINO_HOME"\js.jar
java org.mozilla.javascript.tools.shell.Main
C:>java -jar "%RHINO_HOME
これを実行すると次のエラーが発生する。これは Rhino 1.7R4 になってからだ。
js: Cannot convert function to interface java.awt.event.WindowListener since it contains methods with different names
この問題に対する原因と対応策は、下記のページにある。
http://syjilog.blogspot.jp/2012/09/rhino17r4java.html
http://syjilog.blogspot.jp/2012/09/rhino17r4swingapplicationjs.html
私は前者の対策で対応した。
上記の対応を施して実行したら、今度は次のエラーが出た。
Exception in thread "AWT-EventQueue-0" org.mozilla.javascript.EcmaError: ReferenceError: "ERROR_MESSAGE" is not defined. at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3687)
こちらに対してはまだ対応策がわからない。 http://syjilog.blogspot.jp/2012_09_01_archive.html を頼りにやっていこう。
まりんきょ学問所 > JavaScript 手習い > サーバサイド JavaScript