Java/Rhino/基本構文
はじめに
-Scripting Javaを参照して勉強。
–http://developer.mozilla.org/ja/docs/Scripting_Java
-直接見たほうがわかりやすいかもしれない。
基本
コードは基本的にJavaScriptであるが、Javaクラス読み込みなどのため、一部独自拡張されている構文がある。
Javaパッケージ・クラスへのアクセス
Rhinoを利用すると、Javaのパッケージやクラスへのアクセスを容易に行うことができます。(以下の例はRhinoシェル上で実行)
構文
例([]はRhinoシェルからの応答)
[JavaPackage java.util]
javaで始まるパッケージに限り、Packages.を付けなくてもアクセスすることができます。
例
[JavaPackage java.io]
同じ構文で、Javaのクラスにもアクセスすることができます。
例
[JavaClass java.util.List]
importPackage()構文を利用してパッケージをインポートすることで、Packages.構文を省いてクラスにアクセスできるようになります。
例
js: "<stdin>", line 8: uncaught JavaScript runtime exception:
ReferenceError: "List" is not defined.
at <stdin>:8
js> importPackage(java.util)
js> List
[JavaClass java.util.List]
存在しないパッケージやクラスを指定してもエラーとならないので要注意!
例
[JavaPackage referenceerror]
要するに、いつものあのクラスが簡単に使えるのです。
js> new Date()
Tue Jul 29 2008 13:21:22 GMT+0900 (JST)
対話しながらUIを構築
Rhinoシェルと対話しながらUIを構築する方法が、Rhinoの利用方法としてよく紹介されています。
たとえば、
js> frame.setSize(500, 500);
js> frame.visible = true;
とすると、画面上に500×500のウィンドウが表示されます。その状態で、
を実行すると、ウィンドウサイズがリアルタイムで1500×1500に切り替わります。
配列の利用
JavaScriptの配列を生成
js> a
js> ,,,,
Javaの配列を生成
js> a
js> [Ljava.lang.String;@1abc7b9
外部JavaScriptファイルの読み込み
外部のjsファイルをRhinoで読み込むときは、load()メソッドを利用します。
書式
例
js> sample
function sample() {
print("sample.js");
}
js> sample()
sample.js
js>
URLの読み込み
readUrl()メソッドを利用して、外部URLのソースを読み込むことができる。
js> print(examplecom)
<HTML>
<HEAD>
<TITLE>Example Web Page</TITLE>
</HEAD>
<body>
<p>You have reached this web page by typing "example.com",
"example.net",
or "example.org" into your web browser.</p>
<p>These domain names are reserved for use in documentation and are not available
for registration. See <a href="http://www.rfc-editor.org/rfc/rfc2606.txt">RFC
2606</a>, Section 3.</p>
</BODY>
</HTML>
それ以外のメソッド・利用例は
-こちら
–http://developer.mozilla.org/ja/docs/index.php?title=Rhino_Shell
Java/Rhino/奇妙な構文
イントロダクション
Rhinoでは、JavaとJavaScriptが融合しているのでそれなりに気持ち悪い構文でプログラムが書けたりするようです。
いろいろ試してみる(かも)
引数に無名関数
わりと普通かも。
js> System.out.println((function(){return "e"})())
e
もちろんこれもいける
js> var e = function(){return "e"}
js> System.out.println(e());
e

