The term “component model”
has many different interpretations. Enterprise JavaBeans specifies a
server-side component model. Using a set of
classes and interfaces from the javax.ejb
packages, developers can create, assemble, and deploy components that
conform to the EJB specification.
The original JavaBeans™, the
java.beans
package in the core Java API, is also a
component model, but it’s not a server-side component model
like EJB. In fact, other than sharing the name
“JavaBeans,” these two component models are completely
unrelated. A lot of the literature has referred to EJB as an
extension of the original JavaBeans, but this is a misrepresentation.
Other than the shared name, and the fact that they are both Java
component models, the two APIs serve very different purposes. EJB
does not extend or use the original JavaBeans component model.
The original JavaBeans (the java.beans
package) is
intended to be used for intraprocess purposes,
while EJB (the javax.ejb
package) is designed to
be used for interprocess components. In other
words, the original JavaBeans was not intended for distributed
components. JavaBeans can be used to solve a variety of problems, but
is primarily used to build
clients by assembling visual (GUI) and
nonvisual widgets. It’s an excellent component model, possibly
the best component model for intraprocess
development ever devised, but it’s not a server-side component
model. EJB is designed to address issues involved with managing
distributed business objects in a three-tier architecture.
Given that JavaBeans and Enterprise JavaBeans are completely different, why are they both called component models? In this context, a component model defines a set of interfaces and classes in the form of Java packages that must be used in a particular way to isolate and encapsulate a set of functionality. Once a component is defined, it becomes an independent piece of software that can be distributed and used in other applications. A component is developed for a specific purpose but not a specific application. In the original JavaBeans, a component might be a push button or spreadsheet that can be used in any GUI application according to the rules specified in the original JavaBeans component model. In EJB, a component might be a customer business object that can be deployed in any EJB server and used to develop any business application that needs a customer business object.