Javaを途中までかじったが挫折した。やはりJavaプログラマにスキルチェンジしたい! という読者のために、Tomcatの最新バージョンを使いながらJSPを基礎から解説していく。(編集部)
JSP開発では、「JavaBeansコンポーネント(以下、JavaBeans)」と呼ばれるコンポーネント・モデルが広く利用されています。今回は、このJavaBeansとは何か、について簡単に説明します。
JavaBeansとは、ごく簡単にいえば「Javaクラス」のことです。ただし、普通のJavaクラスのすべてがJavaBeansとして扱えるわけではありません。サン・マイクロシステムズが公開するJavaBeans 1.01仕様には、次のように記されています。
「JavaBeansとは、開発ツール上でビジュアル操作によって扱える、再利用可能なソフトウェア・コンポーネントである」
この記述のとおり、もともとJavaBeansはビジュアル開発ツール向けのコンポーネント・モデルとして策定されました。マイクロソフトのビジュアル開発ツール「Visual Studio」でいえば「ActiveXコントロール」に相当するコンポーネントです。
しかし近年は、JavaBeansはビジュアル開発ツールにとどまらず、TomcatなどのWebコンテナやアプリケーション・サーバ上で用いられる「サーバサイド・コンポーネント」としても広く普及しています。
いずれにせよ、JavaBeansの最大の特徴は、普通のJavaクラスとは異なり「開発ツールやWebコンテナが事前知識なしに扱えるソフトウェア・コンポーネント」であるという点です。例えば、あなたが以下のようなJavaクラスを自作したとします。
public class Foo { public Foo(String i) { // 初期化処理 } //以下略 }
開発ツールやWebコンテナが、このJavaクラスのオブジェクトを生成するケースを考えてください。果たして、コンストラクタFooの引数にはどのような値を渡せばよいのでしょうか? このように、何の取り決めもなく記述されたJavaクラスでは、事前知識がない限りオブジェクトを作ることさえできないのです。
これに対してJavaBeansは、事前知識がなくても扱えるように「一定の作法」に従って記述されたJavaクラスです。具体的には、以下のようなルールです。
以下、それぞれの作法について説明します。
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.