EJB的发展历史

 

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的远程访问支持还是吸引了大量厂商的眼球,立即成为当时最大的热门技术。

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

(2)EJB 1.1

EJB 1.1与EJB 1.0的区别在于EJB1.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中SessionBean的开发,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。

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值