EJB的发展历史

EJB的发展历史

转自:http://book.51cto.com/art/201008/220992.htm
8.1.2 EJB的发展历史
http://book.51cto.com  2010-08-21 17:25  李刚  电子工业出版社  我要评论(0)
摘要:《经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发》第8章会话EJB,升级之后的EJB 3规范对开发者来说具有简单、易用的特征,正是因为这种勇于自我革新的精神,使得EJB 3规范重新焕发出新的魅力。本小节为大家介绍EJB的发展历史。
标签:EJB  Java EE  WebLogic  JSF+EJB 3+JPA  经典Java EE企业应用实战


8.1.2  EJB的发展历史

对于EJB这种备受争议却又充满传奇色彩的技术,我们将再次回顾它从辉煌出场,经历黯然衰败,直到今天再次辉煌的发展轮回。

(1)EJB 1.0

最初的EJB 1.0大约于1998年发布,最初的规范只包含有状态的和无状态的两种服务器对象(后来统称为有状态的会话Bean和无状态的会话Bean),以及可选的持久化领域对象(后来称为实体Bean),EJB 1.0就已经提供了良好的分布式支持功能:它允许通过远程接口来远程调用EJB中的业务方法。

EJB 1.0规范试图简化RMI的远程访问编程,但EJB 1.0规范却引入了新的烦琐,开发编写一个EJB更难了,甚至比直接用RMI更复杂。但无论如何,EJB 1.0的远程访问支持还是吸引了大量厂商的眼球,立即成为当时最大的热门技术。

但EJB 1.0也有一个考虑不全的地方,它过早地估计网络就是计算机,它强制客户机组件总以远程访问的方式来调用EJB的方法,对于一些不需要远程访问支持的系统来说,EJB 1.0的远程访问支持就变成了一种累赘:它会加大系统开销,影响性能。

(2)EJB 1.1

EJB 1.1与EJB 1.0的区别在于EJB 1.1正式支持实体Bean,实体Bean成为EJB核心规范之一,实体Bean既是当年Sun公司寄予厚望的持久化解决方案,也是导致EJB饱受骂名的重要原因。除此之外,EJB 1.1引入了XML格式的部署描述文件,使用XML配置文件以声明式的方式来管理EJB部署信息。

EJB引入XML配置文件时大概是XML最风光的时候,大量的技术实现、框架都打算采用XML来作为配置文件,将以"硬编码"方式写在程序代码中的信息提取到XML配置文件中成了一种潮流。再后来,Annotation出现了,大部分技术、框架又放弃了XML配置文件,改为使用Annotation来管理配置信息。

(3)EJB 2.0

EJB 2.0解决了EJB 1.0中强制远程访问支持带来的系统开销和性能下降问题,EJB 2.0规范引入了本地接口的概念,它允许开发者自己决定是否要让EJB组件支持远程访问,如果EJB组件不需要支持远程访问,让Bean实现类实现本地接口即可,这就可以避免远程访问支持带来的系统开销和性能下降。

EJB 2.0增强了实体Bean的功能,它为CMP(容器管理持久化)的EJB提供了容器管理关系(CMR)的支持,允许开发者通过配置文件来管理EJB之间的关联关系。而且还引入了EJB查询语言:EJB-QL,EJB-QL正式为实体Bean提供了查询支持。不幸的是,EJB-QL的功能似乎不如原生SQL强大,往往对开发者形成某种制约。

EJB 2.0规范的另一个亮点是:消息驱动Bean(MDB),消息驱动Bean本质上与无状态的会话Bean相同。只是它无须远程接口,因此它不能被客户机调用。但客户机组件可通过向消息目的发送消息来触发MDB的onMessage方法。

(4)EJB 2.1

EJB 2.1增加了Web Service支持,增加Web Service支持后的EJB更有利于异构系统的整合。不仅如此,EJB 2.1还增加了计时器服务,允许按指定时间或固定间隔来调用EJB的业务方法,计时器服务可以非常方便地为系统提供任务调度的支持。

除此之外,EJB 2.1增强了EJB-QL的功能,从而提供了更强大的查询支持。虽然EJB 2.1在努力改进EJB-QL查询功能,但大家对EJB 2的骂声掩盖了Sun在EJB-QL上的努力。

(5)EJB 3.0

EJB 3完全抛弃了EJB 2实体Bean的设计,仅仅保留原有的Session Bean和消息驱动Bean,这体现了EJB 3自我革新的巨大勇气。EJB 3引进了全新的JPA规范作为持久化解决方案--也许这个说法有一定的问题,因为JPA被定义成一种独立的持久化API,它甚至已经不再属于EJB 3规范。

EJB 3再次简化了EJB 2中Session Bean的开发,Session Bean不再需要Home接口,EJB 3规范只要求提供远程或本地的业务接口即可。而且EJB 3不再推荐使用XML文件作为部署描述文件,而是改为使用Annotation来设置部署描述信息,进一步简化了EJB组件的开发过程。

总之,EJB 3.0是EJB历史上最重要的版本之一,EJB 3.0使得经典Java EE技术重回开发主流,让越来越多的人愿意选择以EJB 3为核心的Java EE来开发企业级应用。

(6)EJB 3.1

笔者成书之时,EJB 3.1规范已经作为Java EE 6规范的一部分被发布。由于EJB 3.1规范刚刚发布不久,因此支持EJB 3.1的应用服务器并不多见,但EJB 3.1宣称进一步简化了EJB 3.0的开发过程,例如,EJB 3.1允许企业Bean只提供一个Bean类,甚至无须提供业务接口;允许通过异步的方式来调用Session Bean的业务方法;简化了EJB的类文件必须打包到JAR文件中的限制,允许直接将EJB类放到WAR文件中。

相信不久各应用服务器厂商马上就会推出支持EJB 3.1规范的服务器,而EJB 3.1也会比EJB 3.0更深入人心。

现在Java EE应用架构已经形成两种主流的技术架构:一种是以EJB为核心,前端以JSF为MVC框架的技术架构,这种技术架构以Sun提倡的官方Java EE技术为主;另一种则是以Spring+Hibernate为核心,前端以Struts 1或Struts 2为MVC框架的技术架构,这种技术架构以主流的开源框架为主。笔者把前者称为经典Java EE,把后者称为轻量级Java EE。

猜你喜欢

转载自susteven.iteye.com/blog/1511120