Javabean和EJB之间的区别

LRE*_*LRE 39 java ejb javabeans

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

JavaBean和EJB之间有什么区别?

cle*_*tus 33

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; }
}
Run Code Online (Sandbox Code Playgroud)

尽管名称如此,EJB几乎完全不相关.

  • 除了它不是什么之外,你能解释一下EJB是什么吗? (12认同)
  • 你可以改进EJB的部分 (2认同)

ada*_*ost 11

看看这篇文章 - JavaBeans vs Enterprise JavaBeans

摘要:

JB

JavaBeans采用低级方法开发可重用的软件组件,可用于在任何区域构建不同类型的Java应用程序(applet,独立应用程序等).

EJB

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


小智 7

  1. JavaBeans在运行时可能是可见的或不可见的.例如,可视GUI组件可以是按钮,列表框,图形或图表.

    EJB是一种非可视的远程对象.

  2. JavaBeans旨在成为单个进程的本地,主要用于在客户端运行.虽然可以开发服务器端JavaBeans,但使用EJB规范开发它们要容易得多.

    EJB是可以仅部署在服务器上的远程可执行组件或业务对象.

  3. JavaBeans是一种创建通用Java组件的组件技术,可以将它们组合成applet和应用程序.

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

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

    EJB具有部署描述符,该描述符描述其外部构建器工具或IDE的功能.

  5. JavaBeans可能包含BeanInfo类,属性编辑器或定制器.

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

  6. JavaBeans没有输入.

    EJB有两种类型 - 会话bean和实体bean.

  7. JavaBeans中的事务不存在明确的支持.

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

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

    EJB无法部署为ActiveX控件,因为ActiveX控件旨在在桌面上运行,而EJB则是服务器端组件.但是,OMG定义了通过EJB-to-CORBA映射的CORBA-IIOP兼容性.


Vis*_*ant 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;
   }
}
Run Code Online (Sandbox Code Playgroud)

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