目的
Java製のJavaScriptエンジン"Rhino(ライノ)"の利用について、自身の備忘録と情報共有のため作成します。
対象は、JavaおよびJavaScriptの基礎知識がある方とします。
内容
以下の3セクションに分けて説明します。なお、実行環境はWindows 7です。
Rhinoとは?
RhinoはオープンソースのJava製JavaScript実装です。通常、EUCを提供するためにJavaアプリケーションに組み込まれます。(私訳)
Rhino is an open-source implementation of JavaScript written entirely in Java. It is typically embedded into Java applications to provide scripting to end users.
"Rhino": MDN
導入方法
Rhinoインタプリタを使って、使用方法を学習します。
まず、以下のページからjarファイルをダウンロードします。
コマンドライン上でjarファイルを実行します。
> java -jar rhino-1.7.7.1.jar
以下が表示されれば成功です。
Rhino 1.7.71 2016 02 01
js>
実行
Javaのコレクションクラス(ArrayList)を生成し、アクセスしてみます。
Rhino 1.7.71 2016 02 01
js> var list = java.util.ArrayList(); // インスタンスを生成
js> list.add("hoge"); // ArrayList.addメソッド
true
js> list.add("piyo"); // ArrayList.addメソッド
true
js> list.add("fuga"); // ArrayList.addメソッド
true
js> for (var i = 0; i < list.size(); i++) { print(list.get(i)); } // ArrayList.getメソッドをJavaScriptのforループから実行
hoge
piyo
fuga
**JavaクラスのインスタンスにJavaScriptでアクセスできました。**Rhinoの動作確認完了です。
所見
- 業務でRhinoの存在を初めて知りました。Java8では、Rhinoから**"Nashorn(ナースホルン)"に置き換えられた**らしい。違いについては未勉強です。
- JavaScriptを使って、Javaのクラスの呼び出しやインスタンス生成できるのは、コラボ企画のような不思議な気持ちになります。
- サーバサイド(のJava上)でJavaScriptを実行でき、独自のJavaクラスを作っておいてエンドユーザ(開発者)に提供できるのがメリットでしょうか?