Java Bean 是可複用的組件,對Java Bean並無嚴格的規範,理論上講,任何一個Java類均可以是一個Bean。但一般狀況下,因爲Java Bean是被容器所建立(如Tomcat)的,因此Java Bean應具備一個無參的構造器,另外,一般Java Bean還要實現Serializable接口用於實現Bean的持久性。Java Bean實際上至關於微軟COM模型中的本地進程內COM組件,它是不能被跨進程訪問的。Enterprise Java Bean 至關於DCOM,即分佈式組件。它是基於Java的遠程方法調用(RMI)技術的,因此EJB能夠被遠程訪問(跨進程、跨計算機)。但EJB必須被佈署在諸如Webspere、WebLogic這樣的容器中,EJB客戶從不直接訪問真正的EJB組件,而是經過其容器訪問。EJB容器是EJB組件的代理,EJB組件由容器所建立和管理。客戶經過容器來訪問真正的EJB組件。java
POJO(Plain Old Java Object)這個名字用來強調它是一個普通java對象,而不是一個特殊的對象。框架
2005年11月時,「POJO」主要用來指代那些沒用聽從特定的Java對象模型,約定或框架如EJB的Java對象.
理想地講,一個POJO是一個不受任何限制的Java對象(除了Java語言規範)。例如一個POJO不該該是
- 擴展預約的類,如 public class Foo extends javax.servlet.http.HttpServlet { ...
- 實現預約的接口,如 public class Bar implements javax.ejb.EntityBean { ...
- 包含預約的標註,如 @javax.ejb.Entity public class Baz{ ...
而後,由於技術上的困難及其餘緣由,許多兼容POJO風格的軟件產品或框架事實上仍然要求使用預約的標註,譬如用於更方便的持久化。
JavaBean 是一種JAVA語言寫成的可重用組件。它的方法命名,構造及行爲必須符合特定的約定:
- 這個類必須有一個公共的缺省構造函數。
- 這個類的屬性使用getter和setter來訪問,其餘方法聽從標準命名規範。
- 這個類應是可序列化的。
由於這些要求主要是靠約定而不是靠實現接口,因此許多開發者把JavaBean看做聽從特定命名約定的POJO。
簡而言之,當一個Pojo可序列化,有一個無參的構造函數,使用getter和setter方法來訪問屬性時,他就是一個JavaBean。