`

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在国内还没有商业技术支持 

分享到:
评论

相关推荐

    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 ...

    Spring3.0帮助文档

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

    spring发展史与优势

    Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 ... 2006 年, EJB3.0 发布 Rod Johnson(spring 之父) Expert One-to-One J2EE Design and Development(2002) 阐述了 J2EE 使用 EJB 开发设计的优

    电子宠物管理

    struts1.2 + ejb3.0 +spring2.0 整合,使用 jboss4.2.0 与 tomcat 服务器, 连接 mysql 数据库。jar 包什么都在里面,解压后直接将 petejb 工程部署到 jboss 上并启动,然后将 petweb 工程部署到 tomcat6.0 即可。...

    spring+jpa

    spring2.0+jpa简介

    Oracle WebLogic Server开发权威指南

    Spring MVC、EJB 3.0、JPA、JMS 和Web 服务等关键技术,展示了这些技术的应用。正文部分带 你经历这个应用程序设的计、开发和部署过程中每一个决策做出的过程,帮助你在自己的开发工 作中做出类似的决策。 读者对象 ...

    spring+jpa web开发例子

    spring2.0+jpa开发web应用程序的小例子

    Spring Boot实战 ,丁雪丰 (译者) .pdf

     到了Spring 2.0,我们可以在配置里使用自定义的XML命名空间,更小、更简单易懂的配 置文件让Spring本身更便于使用。这玩意儿不能更好了。  Spring 2.5让我们有了更优雅的面向注解的依赖注入模型(即 @Component...

    JAVA学习的参考学习流程

    教会如何从零开始学习java 表(1) 面授课程技术 ...08 分布式开发 RMI --> EJB 3.0 --> XFire --> Web Services 09 搜索引擎 Lucene、HTMLParser、Heritrix 10 工作流 JBPM 11 开发工具 Eclipse、Jboss IDE

    Code-Samples:JavaJEE示例代码

    组成项目如下: 带有客户端的EJB 3.0会话bean。 会话bean将其访问方法公开为SOAP Web服务。 具有Servlet,RESTful服务和JSF 2.0接口的Web应用程序。 REST服务以XML(使用JAXB),JSON和纯文本形式返回信息。 JPA...

    J2EE应用开发详解

    246 14.5.2 CORBA和RMI的互操作 247 14.6 小结 248 第15章 Spring框架 249 15.1 Spring 2.0的体系结构 249 15.2 Ioc容器 250 15.2.1 BeanFactory 250 15.2.2 ApplicationContext 252 15.2.3 Beans的生命周期过程 253...

    cxf(jax-ws)+spring+hibernate整合包

    FastInfoset-1.2.12.jar,geronimo-javamail_1.4_spec-1.7.1.jar,geronimo-jaxws_2.2_spec-1.1.jar,geronimo-jms_1.1_spec-1.1.1.jar,geronimo-servlet_3.0_spec-1.0.jar,hibernate-annotations.jar,hibernate-...

    Dependency Injection

    He is a co-author of the Bean Validation (JSR-303), JAX-RS (JSR-311), Servlet 3.0 (JSR-315), and JavaServerFaces 2.0 (JSR-314) specifications. He is also co-author of the Java EE 6.0 (JSR-316) ...

    Java/JavaEE 学习笔记

    第一章 EJB3.0 Foundation...............329 第二章 Session Bean........................330 第三章 消息驱动Bean(MDB).........332 第四章 JPA(Java Persistence API)...332 第五章 Advanced Persistence ...

    J2EE学习笔记(J2ee初学者必备手册)

    第一章 EJB3.0 Foundation...............329 第二章 Session Bean........................330 第三章 消息驱动Bean(MDB).........332 第四章 JPA(Java Persistence API)...332 第五章 Advanced Persistence ...

    整理后java开发全套达内学习笔记(含练习)

    注:float 和 double 的小数部分不可能精确,只能近似。 比较小数时,用 double i=0.01; if ( i - 0.01 ) ... 不能直接 if (i==0.01)... 默认,整数是int类型,小数是double类型 long类型值,需跟L或l在数据后;...

Global site tag (gtag.js) - Google Analytics