39

只是来自相对 Java 新手的一个简单问题:

JavaBean 和 EJB 有什么区别?

4

5 回答 5

32

Java bean 只是一组约定。EJB 是 J2EE 业务组件的标准。

特别是一个Java bean:

  • 有一个公共的默认构造函数;
  • 可读的属性方法以“get”开头;
  • 可写属性方法以“set”开头;和
  • 是可序列化的。

例如,具有“margin”属性的 Java bean 至少应该如下所示:

public class MyBean implements Serializable {
  private int margin;

  public MyBean() { }
  public int getMargin() { return margin; }
  public void setMargin(int margin) { this.margin = margin; }
}

EJB,尽管有这个名字,但几乎完全不相关。

于 2009-09-01T10:46:53.030 回答
11

看看这篇文章 - JavaBeans vs Enterprise JavaBeans

概括:

JB

JavaBeans 采用低级方法来开发可重用的软件组件,这些组件可用于在任何领域构建不同类型的 Java 应用程序(小程序、独立应用程序等)。

EJB

Enterprise JavaBeans 采用高级方法来构建分布式系统。它使应用程序开发人员可以专注于仅对业务逻辑进行编程,而无需编写任何企业应用程序所需的所有“管道”代码。

于 2009-09-01T11:16:33.237 回答
7
  1. JavaBean 在运行时可能是可见的或不可见的。例如,可视化 GUI 组件可以是按钮、列表框、图形或图表。

    EJB 是一个不可见的远程对象。

  2. JavaBean 旨在用于单个进程的本地,主要用于在客户端运行。尽管可以开发服务器端 JavaBean,但使用 EJB 规范来开发它们要容易得多。

    EJB 是只能在服务器上部署的远程可执行组件或业务对象。

  3. JavaBeans 是一种组件技术,用于创建可以组合成小程序和应用程序的通用 Java 组件。

    尽管 EJB 是一种组件技术,但它既不构建也不扩展原始 JavaBean 规范。

  4. JavaBean 有一个称为属性接口的外部接口,它允许构建器工具解释 bean 的功能。

    EJB 有一个部署描述符,用于向外部构建器工具或 IDE 描述其功能。

  5. JavaBeans 可能有BeanInfo类、属性编辑器或定制器。

    EJB 没有BeanInfo类、属性编辑器或定制器的概念,并且除了部署描述符中描述的信息之外,不提供其他信息。

  6. JavaBean 没有类型。

    EJB 有两种类型——会话 bean 和实体 bean。

  7. JavaBeans 中的事务不存在显式支持。

    EJB 可能是事务性的,EJB 服务器提供事务性支持。

  8. 组件桥可用于 JavaBean。例如,JavaBean 也可以部署为 Activex 控件。

    EJB 不能部署为 ActiveX 控件,因为 ActiveX 控件旨在在桌面上运行,而 EJB 是服务器端组件。然而,通过 EJB 到 CORBA 映射的 CORBA-IIOP 兼容性是由 OMG 定义的。

于 2012-01-29T10:03:18.380 回答
5

我发现从接受的答案中理解起来有点麻烦,所以用谷歌搜索了更多链接并得到了以下答案。

Enterprise JavaBeans (EJB) 3.1 这些是J2EE 规范,它指示服务器(应用程序服务器)在EJB 容器中部署一段代码。

EJB 技术是用于开发和部署基于组件的业务应用程序的服务器端组件架构。EJB 技术支持基于 Java EE 6 技术的分布式、事务性、安全和可移植应用程序的快速和简化开发。

用简单的语言: 如果您创建一个 EJB 并将其部署在服务器上,则可以远程调用它(使用某种技术,即使用 RMI 的 JNDI 查找)或本地调用(即在应用程序中)。

另一方面,Java beans是一个简单的普通 Java 类,带有 getter 和 setter,并且该类是序列化的,下面是示例:

public class MyBean implements java.io.Serializable
{
   protected  int theValue;

   public MyBean()
   {
   }

   public void setMyValue(int newValue)
   {
      theValue = newValue;
   }

   public int getMyValue()
   {
      return theValue;
   }
}

因此,这意味着 EJB 和 Java Bean 之间没有可比性,两者是完全不同的概念。

于 2016-02-01T16:55:46.010 回答