天天看点

JavaBean与EJB之区分

  去年下半年正式结束学校生涯,步入社会开始工作,同时暂时放下了自己一直会C/C++三维开发,转向Java和Web开发,一上手就是Web Service的整个系统,服务器端浏览器端全是我一个人。Java里面最大的感觉就是概念特别多,虚张声势来得比较厉害,其实都是纸老虎,使用见招拆招的方法逐渐拨散乌云,一切也都开始回归原本:还是类,函数等等。本文从JavaBean的目的和发展方面就将几个基本概念做个区分:JavaBean, EJB。 1.什么是JavaBean?         JavaBean是什么,这里先不谈。但首先要明白,JavaBean,EJB都是规范。为什么引入这些规范,它们有什么好处?请看如下描述:JavaBean与EJB规范在以下方面有共同的目标:通过标准的设计模式推广Java程序代码,提升开发过程和开发工具之间的重复运用性可携性.但是这两种规格的原始问题却是为了解决不同的问题.定义于JavaBean组件模型中的标准规范,被设计来产生可重复运用的组件,而这些组件通常被用于IDE开发工具,而且通常是可视化组件,当然并不一定是可视化组件. EJB规范所定义的组件模弄,刚是用来开发服务端的Java程序,由于EJB可能执行在不同的服务器平台上,包括无图形的大型主机上,所以EJB无法使用类似AWT或SWING之类的图形化程序库.因此在Sun关于JavaBean与EJB有这样一段描述:JavaBeans let you interactively build graphical user interfaces, and Enterprise JavaBeans let you write software components that execute business logic that runs on the server. With Enterprise JavaBeans transaction and state management, multithreading, and resource pooling are left to the server implementation. Sun定义,JavaBean是一个可重复使用的软件组件。实际上JavaBean是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称bean。Javabean体系结构是第一个全面的基于组件的标准模型之一,为java类提供了定义方法、事件、属性的方法,以便在设计时允许外部的操作和定制。javabean组件是java类,这些类遵循一个统一的接口格式,以便该类的方法命名,底层行为以及具体实现能够符合标准的javabean组件构造方式。这些组件的容器能以标准方式与javabean进行交互,使得javabean可以部署在多种设计工具和运行环境中。  就JavaBean的外貌来说,网上查到这样一些说法: 1)通常在类中可以使用两个方法: get和set来操作属性。(标准界面组件功能接口) 2)对于布尔逻辑类型的属性,允许使用"is"代替上面的"get"和"set"。没有试过! 3)类中方法的访问属性都必须是public的。 4)必须有public无参构造函数。 另外:JavaBean与ActiveX很相似,能用于任何理解JavaBean格式的应用程序。与此不同的是ActiveX可由任何语言开发但只能用于Windows平台,而JavaBean只能由Java开发但能在任何平台上运行。 2. 什么是EJB? 至于EJB,因为没有使用过,也不敢在此妄谈大论,沽且看点资料。 EJB,Enterprise JavaBean ,通常就是Server Bean,是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。EJB 从技术上而言是一种标准,描述了构建应用组件要解决的以下几个问题:可扩展 (Scalable),分布式 (Distributed),事务处理 (Transactional),数据存储 (Persistent),安全性 (Secure)。 所以,EJB应该是Javabean的一种,只是其强调的重点不同罢了。EJB侧重于分布式系统方面.在需要分布式处理时,EJB有很好的稳定性,而Javabean虽然可以通过rmi实现远程方法调用,但他不能部署进EJB容器,稳定性也不如EJB,所以在需要分布式处理时,都会选择EJB.但如果不需要分布式处理,那么Javabean和EJB就没有什么大的不同了,这个时候如果选用EJB反而会增加额外的不必要的开销.所以在非分布式系统中,一般使用Javabean就足以解决问题了. 个人现在使用主要是Java Web Service, Servlet也少用,EJB没有用过,下次整个机会试试。   参考文献: http://www.oreilly.com/catalog/javabeans/chapter/ch01.html http://java.chinaitlab.com/EJB/1895.html http://www.jspcn.net/htmlnews/20060297.html http://www.itisedu.com/phrase/200604241156485.html http://java.ccidnet.com/art/3737/20051107/458627_1.html http://www.poptool.net/software/p115/A11514123.shtml