`

Spring2.0和EJB3.0随谈

阅读更多

Spring自从2003年发布以来,一直是Java开源框架的奇迹之一。从2000年开始,伴随着B/S架构逐渐引入企业应用软件开发的领域,Java就逐渐成为企业应用开发的主流技术,一直到2003年,Struts+EJB一直是Java技术架构的不二选择,然而这一切随着2003年Spring以without EJB的面目出现之后,一切都开始改变。 

大概从2003年下半年开始,Spring+Hibernate就开始甚嚣尘上,似乎那时候的Spring和Hibernate尚且不足以动摇J2EE规范以EJB为核心的领袖地位。但是2004年5月份,吸收了Spring/Hibernate框架优点的EJB3 JCP委员会的成立,事实上宣判了Spring对EJB2的终结,EJB3则更像是Vendor们的一种自救行为。 

2004年到2006这三年时间以来,Spring取得了相当辉煌的成就,不但将EJB2赶进历史,而且牢牢确立了Spring作为Java企业应用开发的主流地位。而今,甚至对技术比较保守的金融电信行业,也开始言必称Spring,Spring已经成为Java框架的事实标准。 

在2004年5月份之后,Hibernate Team开始和Spring公然决裂,这个事情放在两年多以后的今天来看,原因是昭然若揭的,背靠JBoss的Hibernate Team已经成为EJB3规范的一部分,而JBoss希望力推的以EJB3为核心的Java架构来成为未来的企业应用主流标准,这种情况演变至今,变成了Springframework和JBoss Seam的两种不同技术架构的竞争关系。 

2004年5月份,EJB3规范的起步,对Spring未来其实有很大的威胁,但是EJB3规范历经两年时间的难产,终于在2006年5月正式发布之时,已经为时过晚了,抬眼望去,已尽是spring的天下。 

有意思的是,大致展望一下未来,Java的企业应用开发还能遵循Sun和JCP制订的Java EE规范的道路走下去吗?如果不是这样,那么未来道路是什么呢? 

观察一下Java社区几股大的势力,会发现一些有意思的现象: 

IBM和BEA是Java社区的领导者,从2004年开始,IBM和BEA开始大肆宣传SOA,将他们的目光从应用服务器领域挪到了松藕合企业服务领域,开展SOA商业战略。与此同时,EJB3专家委员会的领导者也悄然变成了JBoss和Oracle,是IBM和BEA无力争取吗?当然不是。IBM和BEA已经看到了应用服务器市场和底层框架平台即将被开源占领,商业价值萎缩,因而审时度势进行战略转型。一方面押宝SOA战略,大肆炒热和培育SOA市场,另一方面也积极占领开源市场,IBM放出来WebSphere社区版本-Apache Geronimo,BEA干脆和Spring的咨询公司interface21合作,提供spring框架在WebLogic上的商业技术支持,如今EJB3对于他们来说已经形同鸡肋,就抛给别人嚼吧。 

将EJB3当块宝的自然是应用服务器市场的跟随者JBoss和Oracle,一方面凭借ORM的先天优势,另一方面有出头机会也不能放过,EJB3委员会几乎成了JBoss和Oracle的天下。特别是JBoss,更加积极推出JBoss Seam框架,希望确立以JSF+EJB3的架构树立Java开发的标准,用以取代Struts/Spring/Hibernate的流行组合,因而开启了EJB3和Spring 正面交锋的战争。 

Java Vendor中另外一股势力Sun公司这两年则一直自顾不暇,在应用服务器领域几乎退出市场,直到最近才搞出来一个Glassfish,在开发框架领域也一直毫无建树,推出的JSF至今还很不成熟,难担大任,也许Sun都去忙着开源Solaris和JVM源代码了。 

几个大的Vendor或战略转型,或自顾不暇,或忙于收购(Oracle),Java开发领域的主战场被打扫一空,对决的双方换成了Spring和JBoss。对决的武器则是spring vs Seam。 

Spring代表了不遵循通用标准,自己制订游戏规则,不依赖容器的一方;JBoss代表了遵循通用标准,但是锁定容器的一方。这场对决从2004年5月就开始上演,未来很长时间也会继续下去。不过Spring已经站在优势很大的地位上了。 

大致对比一下两者:Spring vs EJB3,就会发现Spring从功能上面已经胜出很多了: 

1、IoC容器spring胜出 

Spring的IoC容器很强大,其bean管理功能超过了目前EJB3容器,配置方面Spring稍微复杂一些。不过对于全局性配置来说,XML要优于EJB3的annotation。 

2、AOP能力Spring胜出 

EJB3目前提供的AOP功能非常简单,本来已经无法和Spring相比,至于集成AspectJ的Spring2.0,就更加望尘莫及了。 

3、事务管理方面EJB3稍微领先 

Spring提供了很棒的本地事务模型,也可以集成JTA,但是不支持分布式事务,当然这种场景也非常罕见。 

4、Web框架spring胜出 

EJB3标准集成JSF,但是JSF并不成熟,和AJAX配合度也不好。Spring可以灵活集成各种Web框架和模板语言,自身也提供了相当强大的MVC框架,要是这还觉得不够,那么spring webflow,portlet support都拿出来。 

5、远程访问支持,大致持平 

EJB3继承了传统的EJB远程访问能力,Web Services支持也不错;不过Spring提供了更多更灵活的选择,Java RPC,HTTP Invoker,Hessian/Burlap,WebServices。 

6、框架集成能力,spring胜出 

这是spring的传统优势项目,只要看看spring modules项目,看看n多第三方spring支持,就会发现spring现在的群众基础多么好,集成工作流,spring modules已经提供了方便的模板类,集成规则引擎,Cache,CMS,脚本语言,异步任务,安全验证框架。。。。。。EJB3有点望尘莫及的味道 

7、JMS,JMX,JCA等,EJB3领先一步 

这些传统EJB优势项目往往应用的不太多,EJB3仍然是领先的。不过令人侧目的是,Spring最近几个版本在连续追赶EJB这些传统优势领域,到Spring2.0为止,其JMS,JMX,JCA支持已经相当不错了,可以说传统EJB能够做的,现在Spring也可以做得到。 

这几年除了Spring框架自身不断完善和延伸到传统应用领域,围绕在Spring周围的第三方框架也是越来越丰富,EJB3在annotation方面有些独到的优势,在一些传统领域,还领先spring,但是总体来说,EJB3为核心的J2EE5.0规范很难和Spring现在的2.0相匹敌,更何况Java的主力Vendor早已醉翁之意不在这里了,单凭JBoss的Seam,难以战胜spring。 

目前JBoss已经开始在国内进行商业上的推广,也希望以其EJB3技术来和Springframework相抗衡,JBoss目前用来说服客户使用EJB3的理由主要有两点: 

1、EJB3是一个标准,由多个厂商提供实现 
2、JBoss的EJB3由Red Hat公司及其合作伙伴提供技术支持,而springfrmework在国内还没有商业技术支持 

分享到:
评论

相关推荐

    spring2.0 jar包

    9. **支持EJB 3.0**:虽然Spring倡导轻量级容器,但2.0版本开始支持EJB 3.0,允许开发者在不放弃Spring优势的同时,利用EJB的某些特性。 10. **测试框架**:Spring 2.0增强了测试支持,包括`Spring Test`和`Mock ...

    EJB3.0 + Struts1.3 + Spring2.0 + JPA

    软件架构: EJB3.0 + Struts1.3 + Spring2.0 + JPA 应用服务器: Jboss5.1 数据库用: Oracle9i 部署前将 demo-service.xml和oracle-ds.xml copy到jboss deploy目录下,配置到你的环境下即可 -- Create sequence ...

    Spring 2.0 源代码

    5. **JSR-250注解支持**:Spring 2.0开始支持JSR-250标准注解,如`@PostConstruct`和`@PreDestroy`,使得初始化和清理方法的标记更为直观,与EJB3.0兼容性增强。 6. **国际化(Internationalization, i18n)**:...

    精通spring2.0源代码

    6. **Java 5和Java EE 5兼容性**:Spring 2.0全面支持Java 5的新特性,如泛型、枚举、注解等,并且能很好地与Java EE 5规范中的EJB 3.0、JSF等技术结合使用。 通过研究《精通Spring 2.0源代码》提供的源码,我们...

    spring2.0技术手册.pdf

    5. **支持更多的 J2EE 技术**:除了传统的 J2EE 技术之外,Spring 2.0 还增加了对 EJB 3.0、JSF 等新标准的支持。 6. **国际化和资源加载器改进**:Spring 2.0 改进了资源加载器,支持更灵活的国际化配置。 #### ...

    (Struts2.0 and EJB)框架配置文件

    EJB3.0引入了注解驱动的编程模型,简化了EJB的使用,使得开发者无需编写大量XML配置文件。 例如,一个简单的Session Bean可能如下所示: ```java @Stateless public class UserService { @PersistenceContext ...

    wxh 《spring2.0语法着色文档 .rar

    - **支持JSR-250**:引入了对企业JavaBeans(EJB)3.0规范的支持,如`@PostConstruct`和`@PreDestroy`注解,简化了初始化和销毁方法的标记。 3. **Spring 2.0的注解** - `@Autowired`:自动装配bean,根据类型或...

    Spring2.0技术手册

    Spring2.0版本进一步增强了对Java EE标准的支持,包括EJB 3.0、JPA等,同时也改进了MVC框架和Web服务支持。 ### Web开发相关技术 #### Ajax、JSP和Servlet - **Ajax**:异步JavaScript和XML的缩写,是一种在无需...

    Spring in action 3.0

    5. **Spring与Java EE 6的集成**:Spring 3.0引入了对Java EE 6规范的支持,包括CDI(Contexts and Dependency Injection)、EJB 3.1、JSF 2.0等,使得Spring应用可以更好地融入到Java EE环境中。 6. **RESTful Web...

    Spring3.0新特性

    在经历了 Spring 2.0(2006年10月发布)和 Spring 2.5(2007年11月发布)两个重要版本后,Spring 3.0 应运而生。作为一次重要的升级,Spring 3.0 在多个方面进行了改进和增强,为开发者提供了更多便利的功能与工具。...

    【中文】【EJB基础】

    随着时间的推移,EJB经历了多个版本的迭代,其中最著名的包括EJB 2.0和EJB 3.0。EJB 2.0引入了容器管理实体Bean(CMT)和消息驱动Bean(MDB),而EJB 3.0则大幅简化了开发模型,引入了注解,使得EJB开发更加简单直观...

    Spring3.0帮助文档

    Spring3.0帮助文档.Spring是一个开源框架,Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

    EJB技术的介绍

    总的来说,EJB作为Java EE的一部分,为企业级应用提供了强大的组件模型,尽管它在过去因复杂性而受到批评,但在EJB3.0及其后续版本中,EJB已经变得更加灵活和易用,仍然是构建大规模分布式系统的重要工具。

    Spring 3.0

    首先,Spring 3.0引入了对Java EE 6的支持,包括对JSF 2.0、JPA 2.0和EJB 3.1等规范的全面支持。这使得Spring框架可以更好地与现代企业级Java环境集成,提供了一个统一的编程模型,降低了开发者的学习曲线。 其次,...

    spring+jpa

    - **支持JSR-250和JSR-303**:Spring 2.0引入了对JSR-250(Common Annotations for the JavaTM Platform)和JSR-303(Bean Validation)的支持,简化了组件管理和数据验证。 2. **JPA 简介** - **ORM概念**:JPA...

    spring帮助文档

    - 提供了对EJB 3.0的集成,使得混合使用EJB和Spring组件成为可能。 综上所述,Spring 2.0作为一个里程碑式的版本,不仅强化了核心功能,还引入了诸多创新特性,极大地推动了Java企业级应用的发展。通过深入学习和...

    spring+jpa web开发例子

    5. **EJB3.0的关联**:虽然EJB 3.0不是一个主要技术,但可能会看到一些EJB的轻量级替代,比如使用`@Stateless`或`@Singleton`注解的无状态会话bean,它们在Spring容器中以类似的方式工作。 6. **部署和测试**:将...

    ejb2.0 api文档快速开发

    - 随后的EJB 3.0版本引入了注解(Annotations),极大地简化了开发过程,并且更倾向于POJO(Plain Old Java Object)风格,降低了学习和使用门槛。 5. EJB与现代框架的对比: - 现代框架如Spring和Java EE 7以后...

    spring2,spring3 相关技术文档

    《[spring2.0技术手册].林信良.扫描版.pdf》则可能是一本由林信良编著的Spring 2.0技术手册,这本书可能包含了Spring 2.x系列的详细教程和实践案例。Spring 2.0是Spring框架的一个里程碑版本,它引入了Spring MVC,...

    spring2.5 struts2.0 hibernate3.1

    此外,3.1版本还提供了更好的类型安全性和对EJB 3.0的兼容性,使得企业级开发更加便捷。 这个"spring2.5 struts2.0 hibernate3.1完美全部jar包.rar" 文件包含了这三个框架的完整库,便于开发者在项目中直接引用,...

Global site tag (gtag.js) - Google Analytics