連載
» 2006年11月11日 00時00分 公開

やり直し「JSPとTomcat」(7):JavaBeansのJavaBeansたるゆえん

Javaを途中までかじったが挫折した。やはりJavaプログラマにスキルチェンジしたい! という読者のために、Tomcatの最新バージョンを使いながらJSPを基礎から解説していく。(編集部)

[吉川和巳,有限会社スティルハウス]

JavaBeansコンポーネントとは

 JSP開発では、「JavaBeansコンポーネント(以下、JavaBeans)」と呼ばれるコンポーネント・モデルが広く利用されています。今回は、このJavaBeansとは何か、について簡単に説明します。

 JavaBeansとは、ごく簡単にいえば「Javaクラス」のことです。ただし、普通のJavaクラスのすべてがJavaBeansとして扱えるわけではありません。サン・マイクロシステムズが公開するJavaBeans 1.01仕様には、次のように記されています。

 「JavaBeansとは、開発ツール上でビジュアル操作によって扱える、再利用可能なソフトウェア・コンポーネントである」

 この記述のとおり、もともとJavaBeansはビジュアル開発ツール向けのコンポーネント・モデルとして策定されました。マイクロソフトのビジュアル開発ツール「Visual Studio」でいえば「ActiveXコントロール」に相当するコンポーネントです。

図1 Java対応ビジュアル開発ツールの例(NetBeans IDE) 図1 Java対応ビジュアル開発ツールの例(NetBeans IDE)

 しかし近年は、JavaBeansはビジュアル開発ツールにとどまらず、TomcatなどのWebコンテナやアプリケーション・サーバ上で用いられる「サーバサイド・コンポーネント」としても広く普及しています。

 いずれにせよ、JavaBeansの最大の特徴は、普通のJavaクラスとは異なり「開発ツールやWebコンテナが事前知識なしに扱えるソフトウェア・コンポーネント」であるという点です。例えば、あなたが以下のようなJavaクラスを自作したとします。

public class Foo {
    public Foo(String i) {
        // 初期化処理
    }
    //以下略
}

 開発ツールやWebコンテナが、このJavaクラスのオブジェクトを生成するケースを考えてください。果たして、コンストラクタFooの引数にはどのような値を渡せばよいのでしょうか? このように、何の取り決めもなく記述されたJavaクラスでは、事前知識がない限りオブジェクトを作ることさえできないのです。

 これに対してJavaBeansは、事前知識がなくても扱えるように「一定の作法」に従って記述されたJavaクラスです。具体的には、以下のようなルールです。

  • 引数なしのpublicコンストラクタでオブジェクトを生成できる
  • 必要に応じて「プロパティ」「イベント」「メソッド」を備える
  • 必要に応じて「Serializable」インターフェイスを実装する

 以下、それぞれの作法について説明します。

JavaBeansのコンストラクタ

 JavaBeansとなるJavaクラスは、publicである(つまり、パッケージ外から呼び出し可能である)、引数を持たないコンストラクタを備えている必要があります。上記のクラスFooにこのルールを当てはめると、以下のようになります。

public class Foo {
    public Foo() {
        // 初期化処理
    }
}

 コンストラクタに引数を渡す必要がなければ、開発ツールやWebコンテナでは「foo.getClass().newInstance();」といったコードを記述することでクラスFooのオブジェクトを生成できます。

 もっとも、ご存じのとおりJavaクラスには「デフォルト・コンストラクタ」と呼ばれる仕組みがあります。つまり、Javaクラスにコンストラクタを1つも定義しない場合、publicである引数なしのコンストラクタが暗黙的に用意されるというものです。よって、コンストラクタ内で特別な初期化処理が必要でない限り、JavaBeansにコンストラクタを明示的に記述する必要はありません。例えば、

public class Foo {
}

 と記述したとしても、立派な1つのJavaBeansとして扱うことができます。

 なお、Javaクラスが抽象クラスやインターフェイスである場合、開発ツールやWebコンテナ側でオブジェクト生成が行えないため、JavaBeansとして扱うことはできません。

 今回は、JavaBeansとは何かを説明し、その作法の1つを紹介しました。次回は、引き続きJavaBeansのもう1つの作法である「プロパティ」について説明する予定です。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。