jython & JavaBeans
本を整理してたら "PYTHON PROGRAMMMING with the Java Class Libraries" という Jython 本が出てきた。おお、まさに今の自分にぴったり。
で、 LL future の帰りに試そうと思っていたこと。
- そもそも Jython はどうやって JButton(actionPerformed=my_action) や、f.visible = 1(f はJFrameのインスタンス)のような、イベントリスナーを直接プロパティのように記述したり、メソッド(setVisible)をプロパティのように簡潔に扱えるか?これは、魔法的だけど、 Jython が JavaBeans 規約をちゃんと知っているだけだ。
- 自分で Java クラスを作った場合でも、以下のような JavaBeans ルールに従えば、Jython がよろしくやってくれる。
以下のようなクラス(getter/setterが呼ばれたらメッセージ出力)を作ると良くわかる。
public class MyBean { private String _name = ""; public MyBean() { } public String getName() { System.out.println("getName called"); return _name; } public void setName(String name) { System.out.println("setName called"); _name = name; } }
これで、jython からは x.name とプロパティのように参照すると、ちゃんと getName/setName が呼ばれる。まさに JavaBeans の目標である、高い再利用性を使っているわけで、 Jython は実に賢いと思う。
- 残念ながら Proce55ing は JavaBeans を指向していない(というより、全体的にシンプルで、良い意味で Java っぽくないような。)。でも、ちょっとだけコードに手を入れれば、上の JButton のように jython とより相性のいいクラスになると思える。
- 追記;一行上は Proce55ing をどうしたいのかぜんぜん明確でない。PApplet から何を切り出すとどうなるのか?