Beanを構成するもの
Java Beansは Javaで開発される再利用可能な部品の標準的な規格を 提供するものです。 その規格を満たす個々の部品は Bean と呼ばれます。 今まで学んできた Javaのクラスと Beanとはどこがちがうのでしょうか? まず次の事実はとても重要です。
Beanはさまざまな構成要素からなる
おそらくこれまで学んできたものの中で Beanに最も似た存在はアプレットでしょう。
アプレットもさまざまな規模のプログラムとして存在することが可能でした。
アプレットはそれ自身が半ば独立した存在であると同時に、
HTMLのページの中に埋め込まれるという部品としての性格も持っていました。
この点も Beanの考え方と共通しています。
実際、ほとんどのアプレットはほとんどそのまま Bean化することが可能です。
ただし、
アプレットが HTMLのページの上という限定された場所でしか利用されないのに対し、
Beanはもっと幅広い用途に利用されるものとして設計されます。
また Beanの場合、GUIベースの開発ツールで開発されるということを常に意識して
設計される点も、従来にはなかった考え方です。
従来のクラスの場合にはアプレットも含め、
ソースコードもしくはバイトコードとクラスがはっきりとした対応を持っています。
これに対して Bean は開発環境との関連やデータのファイルなどの存在も含めた
複合的な存在です。
Beanの中核となるのは確かに Javaのある1つのクラスなのですが、
そのクラスのバイトコードのファイルだけでは Beanとは見なされないのです。
したがって Beanという名前のクラスやインターフェイスは存在しません。
アプレットを開発する際の Appletクラスの継承のようなことは行われません。
これが最初のうち理解しにくい原因かもしれません。
さらに Beanは GUIベースの開発ツールを通じて取り扱われます。
JDKの伝統的なコマンドラインとテキストエディタを中心にした取り扱いとは
全く異なったスタイルにも戸惑いを感じるかもしれません。
Beanとなるための条件
Java Beansは Java言語のクラスが満たすべき条件以外に、 新たにいくつかのルールを導入しています。 Javaの文法上は正しいコードを記述したとしても、 そのままでは Beanにはなれません。 まず、最も根本的な条件は次のことです。
Beanであることの識別
クラスだけでは Beanとは見なされないと先に述べましたが、 では Beanであることの情報はどこに存在し、 どのようにして識別されるのでしょうか? Beanはファイルの集合体でしたから、 そうした集合体そのものに Beanであるという情報を記述することになります。 Beanは必ず Jar形式のファイルによって配布されます ( Jarについては第12週の解説を参照 )。 Jarファイルはその内部にマニュフェスト・ファイルというファイルの情報を 記憶するための部分を持ちます。その中に「Beanであるということ」を 記述しておきます。具体的には次のように Beanであることを示す情報を Jarファイル生成時につけ加えます。
Manifest-Version: 1.0
Java-Bean: True
Java Beansは「デザインパターン」か?
オブジェクト指向プログラミングで大規模なアプリケーションを開発する経験が
蓄積されてくると、
より効率よく開発するためのさまざまな工夫が提案されるようになりました。
それらを体系化しクラスを設計するための指針としたものが
「デザインパターン(Design Pattern)」と呼ばれるものです。
たとえば Java Beansが要請するメソッドの命名規則などは、
広い意味でデザインパターンの手法の1つと言うことができます。
ただし最近はデザインパターンという言葉の力点は、
「クラスの設計のパターンの分類」と「お手本の提供」にあるようです。
ちょうど手続き指向プログラミングで経験が積み重ねられていくに従って、
より洗練されたアルゴリズムが蓄積されていったのと事情が似ています。
Java Beansはそうしたものの提供を目指したものではありません。
その意味では「Java Beansはデザインパターンだ」
と言うと誤解を招くことになるかもしれません。