Bean
概要

Beanには、主にクライアント側や汎用部品として用いられる「JavaBeans」と、サーバ側で動作する大規模な業務システム向けの「Enterprise JavaBeans」(EJB)の2種類が存在する。両者とも特定の規約に従い、部品としての互換性や統一的な扱いを実現する点が共通する。
JavaBeans仕様では、引数を取らないpublicなコンストラクタを持つこと、プロパティへのアクセス手段としてgetterメソッドやsetterメソッドが命名規則に則って実装されていること、シリアライズが可能であることなどの規約が定められている。これらの規約により、開発ツールやフレームワークがBeanを自動的に認識し、統一的な方法で扱えるようになる。
EJBは、サーバ側で動作するJavaプログラム、いわゆるサーバサイドJavaをBean化する仕様である。役割に応じてさらに分類され、利用者との接続セッションごとに一時的な処理や業務ロジックを実行する「Session Bean」(セッションBean)、データベースなどの永続的なデータ管理や参照を行う「Entity Bean」(エンティティBean)が定義され、それぞれ異なる技術仕様を満たすことが求められる。
EJBの仕様は時代と共に変化しており、現在主流のJava EEおよびその後継であるJakarta EEでは、Entity Beanに代わってJPA(Java Persistence API)を用いたエンティティクラスが永続化処理を担う。Session Beanについても、状態を持たないStateless型と状態を保持するStateful型に加え、メッセージ駆動型のコンポーネントが定義され、アノテーションを用いた軽量な実装によって開発者の負担を減らす方向に改良されている。
近年では、従来のEJB仕様が複雑化し過ぎた反省から、基本的なJava仕様のみを用いる「POJO」(Plain Old Java Object)を基にした設計が主流となっている。「Spring Framework」などの開発環境では、フレームワークが管理するオブジェクトの単位を「Bean」と呼ぶことが多く、JavaBeansの基本思想を継承したものとして、コンポーネント一般を指す用語としても定着している。