Javabean和EJB之间的区别

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

JavaBean和EJB有什么区别?

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尽pipe名称几乎完全不相关。

看看这篇文章 – JavaBeans与Enterprise JavaBeans

概要:

JB

JavaBeans采用低级方法开发可用于在任何领域构build不同typesJava应用程序(小程序,独立应用程序等)的可重用软件组件。

EJB

Enterprise JavaBeans采用高级方法构build分布式系统。 它使应用程序开发人员专注于编程业务逻辑,而不需要编写任何企业应用程序中所需的所有“pipe道”代码。

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

    EJB是一个非可视的远程对象。

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

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

  3. JavaBeans是一种组件技术,用于创build通用的Java组件,这些组件可以一起组成applet和应用程序。

    尽pipeEJB是一种组件技术,但它既不是build立在原始JavaBean规范的基础上,也不是扩展。

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

    EJB具有一个部署描述符,可将其function描述为外部构build工具或IDE。

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

    EJB没有BeanInfo类,属性编辑器或定制器的概念,除了部署描述符中描述的内容外,没有提供额外的信息。

  6. JavaBeans没有input。

    EJB有两种types – 会话bean和实体bean。

  7. JavaBean中没有对事务的显式支持。

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

  8. 组件桥接器可用于JavaBean。 例如,JavaBean也可以作为一个Activex控件进行部署。

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

JavaBeans是可重用的Java软件组件,可以在构build器工具中直观地操作。

Enterprise JavaBeans(EJB)是用于企业应用程序模块化构build的托pipe的服务器端组件体系结构。

我发现从被接受的答案中理解起来有点麻烦,于是用了更多的链接,并得到了下面的答案。

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

EJB技术是用于开发和部署基于组件的业务应用程序的服务器端组件体系结构。 EJB技术支持基于Java EE 6技术的分布式,事务式,安全和便携式应用程序的快速简化开发。

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

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

 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 Beans之间没有比较, 两者都是完全不同的概念。