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
    • その他

以下のようなクラス(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 から何を切り出すとどうなるのか?