PHPでサーバーサイドJavaScriptを実現する。
はじめに
Rhino(MozillaによるJavaによるJavaScriptの実装)を利用してPHPでサーバーサイドJavaScriptを実現しようという試みです。適当にいじっていたら動いたので共有の為にメモっておきます。
構築手順
今回はPHPの4.4.4(縁起悪ぃw)を利用しました。PHPとJavaを連携させる必要があるのでまずそちらかの解説です。PHPとJavaとの連携はイロイロと実績があるので他の環境で動くと思います。PHP4とApache(HTTPd)とRhinoが必要になります。
- php.iniの編集
- C:\Windows\System32に以下のjvm.dllを放り投げる必要がある場合があります。client\jvm.dllとserver\jvm.dllがあるので注意願います。server\jvm.dllが必要です。
- Apacheの再起動
[Java] java.class.path = "C:\php4\extensions\php_java.jar;C:\rhino\js.jar"; java.home = C:\Java\jdk1.5.0 java.library = C:\Java\jdk1.5.0\jre\bin\server\jvm.dll java.library.path = C:\php4\extensions
以上で環境構築はできたはずです...たぶん。
PHPとJavaの連携
以下のスクリプトが動けばJavaとPHPの連携がとれていると思います。以下のサンプルはPHPのマニュアルから借用いたしました。
$system = new Java('java.lang.System'); // プロパティへのアクセスのデモ print 'Java version='.$system->getProperty('java.version').' <br>';
PHPでサーバーサイドJavaScript
実験に利用したPHPファイルです。
$javascript = "function f(x){return x+1} f(7)"; $rhino = new Java('org.mozilla.javascript.Context'); $cx = $rhino->enter(); $sc = $cx->initStandardObjects(); // 以下の<cmd>ってなんですか? $result = $cx->evaluateString($sc, $javascript, "<cmd>", 1, null); var_dump($cx->toString($result)); // 結果として8が表示されます。 $rhino->exit();