サーバサイド JavaScript

作成日:2013-01-26
最終更新日:

オライリーの JavaScript 第6版 を図書館から借りて、 いろいろ調べている。 12 章の JavaScript のサーバサイド JavaScriptは知らないので、少し調べてみた。

Rhino と Node

同書ではサーバサイド JavaScript が使えるアプリケーションとして、Rhino と Node を紹介している。 Node はソースコードからのコンパイルが必要で、UNIX 系でのみ動作するようだ。 私は最近 UNIX から遠ざかっているので、今回は Rhino のみを調べた。

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

Rhino によるアプリケーション

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


MARUYAMA Satosi