Java/Rhino/基本構文

1月 1, 2003 · Posted in Java, Rhino · Comment 

はじめに

-Scripting Javaを参照して勉強。
http://developer.mozilla.org/ja/docs/Scripting_Java
-直接見たほうがわかりやすいかもしれない。

基本

コードは基本的にJavaScriptであるが、Javaクラス読み込みなどのため、一部独自拡張されている構文がある。

Javaパッケージ・クラスへのアクセス

Rhinoを利用すると、Javaのパッケージやクラスへのアクセスを容易に行うことができます。(以下の例はRhinoシェル上で実行)

構文

Packages.[Javaパッケージ]

例([]はRhinoシェルからの応答)

js> Packages.java.util
[JavaPackage java.util]

javaで始まるパッケージに限り、Packages.を付けなくてもアクセスすることができます。

js> java.io
[JavaPackage java.io]

同じ構文で、Javaのクラスにもアクセスすることができます。

js> Packages.java.util.List
[JavaClass java.util.List]

importPackage()構文を利用してパッケージをインポートすることで、Packages.構文を省いてクラスにアクセスできるようになります。

js> List
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]

存在しないパッケージやクラスを指定してもエラーとならないので要注意!

js> Packages.referenceerror
[JavaPackage referenceerror]

要するに、いつものあのクラスが簡単に使えるのです。

js> importPackage(java.util)
js> new Date()
Tue Jul 29 2008 13:21:22 GMT+0900 (JST)

対話しながらUIを構築

Rhinoシェルと対話しながらUIを構築する方法が、Rhinoの利用方法としてよく紹介されています。

たとえば、

js> var frame = new Packages.javax.swing.JFrame();
js> frame.setSize(500, 500);
js> frame.visible = true;

とすると、画面上に500×500のウィンドウが表示されます。その状態で、

js> frame.setSize(1500, 1500);

を実行すると、ウィンドウサイズがリアルタイムで1500×1500に切り替わります。

配列の利用

JavaScriptの配列を生成

js> var a = new Array(5)
js> a
js> ,,,,

Javaの配列を生成

js> var a = java.lang.reflect.Array.newInstance(java.lang.String, 5);
js> a
js> [Ljava.lang.String;@1abc7b9

外部JavaScriptファイルの読み込み

外部のjsファイルをRhinoで読み込むときは、load()メソッドを利用します。

書式

load(ファイル名, ファイル名2, … ファイル名n)

js> load("sample.js")
js> sample

function sample() {
print("sample.js");
}

js> sample()
sample.js
js>

URLの読み込み

readUrl()メソッドを利用して、外部URLのソースを読み込むことができる。

js> var examplecom = readUrl("http://example.com/");
js> print(examplecom)
<HTML>
<HEAD>
<TITLE>Example Web Page</TITLE>
</HEAD>
<body>
<p>You have reached this web page by typing &quot;example.com&quot;,
&quot;example.net&quot;,
or &quot;example.org&quot; 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/奇妙な構文

1月 1, 2003 · Posted in Java, Rhino · Comment 

イントロダクション

Rhinoでは、JavaとJavaScriptが融合しているのでそれなりに気持ち悪い構文でプログラムが書けたりするようです。
いろいろ試してみる(かも)

引数に無名関数

わりと普通かも。

js> importPackage(java.lang)
js> System.out.println((function(){return "e"})())
e

もちろんこれもいける

js> importPackage(java.lang)
js> var e = function(){return "e"}
js> System.out.println(e());
e

« 前ページへ