JavaBeans may be visible or nonvisible at runtime. For
example, the visual GUI component may be a button, list
box, graphic or a chart.
An EJB is a nonvisual, remote object.
JavaBeans are intended to be local to a single process
and are primarly intended to run on the client side. Although
one can develop server-side JavaBeans, it is far easier to
develop them using the EJB specification instead.
EJB's are remotely executable components or business
objects that can be deployed only on the server.
JavaBeans is a component technology to create generic
Java components that can be composed together into applets
and applications.
Even though EJB is a component technology, it neither
builds upon nor extends the original JavaBean specification.
JavaBeans have an external interface called the properties
interface, which allows a builder tool to interpret the
functionality of the bean.
EJBs have a deployment descriptor that describes its
functionality to an external builder tool or IDE.
JavaBeans may have BeanInfo
classes, property editors or
customizers.
EJB's have no concept of BeanInfo
classes, property
editors or customizers and provide no additional information
other than that described in the deployment descriptor.
JavaBeans are not typed.
EJBs are of two types - session beans and entity beans.
No explicit support exists for transactions in JavaBeans.
EJB's may be transactional and the EJB servers provide
transactional support.
Component bridges are available for JavaBeans. For example, a
JavaBean can also be deployed as an Activex control.
An EJB cannot be deployed as an ActiveX control because
ActiveX controls are intended to run at the desktop and
EJB's are server side components. However CORBA-IIOP
compatibility via the EJB-to-CORBA mapping is defined by the
OMG.