无责任评论Spring和Java企业应用 Q原作者“江南白衣”)
Spring自从2003q发布以来,一直是Java开源框架的奇迹之一。从2000q开始,伴随着B/S架构逐渐引入企业应用软g开发的领域QJava逐渐成ؓ(f)企业应用开发的L技术,一直到2003q_StrutsQEJB一直是Java技术架构的不二选择Q然而这一切随着2003qSpring以without EJB的面目出C后,一切都开始改变?br /> 大概?003q下半年开始,SpringQHibernate开始甚嚣尘上,g那时候的Spring和Hibernate且不以动摇J2EE规范以EJB为核心的领袖C。但?004q?月䆾Q吸收了Spring/Hibernate框架优点的EJB3 JCP委员?x)的成立Q事实上宣判了Spring对EJB2的终l,EJB3则更像是Vendor们的一U自救行为?br /> 2004q到2006q三q时间以来,Spring取得了相当辉煌的成就Q不但将EJB2赶进历史Q而且牢牢立了Spring作ؓ(f)Java企业应用开发的LC。而今Q甚臛_技术比较保守的金融?sh)信行业Q也开始言必称SpringQSpring已经成ؓ(f)Java框架的事实标准?br /> ?004q?月䆾之后QHibernate Team开始和Spring公然册Q这个事情放在两q多以后的今天来看,原因是昭然若揭的Q背靠JBoss的Hibernate Team已经成ؓ(f)EJB3规范的一部分Q而JBoss希望力推的以EJB3为核心的Java架构来成为未来的企业应用L标准Q这U情冉|变至今,变成了Springframework和JBoss Seam的两U不同技术架构的竞争关系?br /> 2004q?月䆾QEJB3规范的v步,对Spring未来其实有很大的威胁Q但是EJB3规范历经两年旉的难产,l于?006q?月正式发布之Ӟ已经为时q晚了,抬眼望去Q已是spring的天下?br /> 有意思的是,大致展望一下未来,Java的企业应用开发还能遵循Sun和JCP制订的Java EE规范的道路走下去吗?如果不是q样Q那么未来道路是什么呢Q?br /> 观察一下JavaC几股大的势力Q会(x)发现一些有意思的现象Q?br /> IBM和BEA是JavaC的领D,?004q开始,IBM和BEA开始大肆宣传SOAQ将他们的目光从应用服务器领域挪C松藕合企业服务领域,开展SOA商业战略。与此同ӞEJB3专家委员?x)的领导者也(zhn)然变成了JBoss和OracleQ是IBM和BEA无力争取吗?当然不是。IBM和BEA已经看到了应用服务器市场和底层框架^台即被开源占领,商业价D~,因而审时度势进行战略{型。一斚w押宝SOA战略Q大肆炒热和培育SOA市场Q另一斚w也积极占领开源市场,IBM攑և来WebSphereC版本QApache GeronimoQBEAq脆和Spring的咨询公司interface21合作Q提供spring框架在WebLogic上的商业技术支持,如今EJB3对于他们来说已经形同鸡肋Q就抛给别h嚼吧?br /> EJB3当块宝的自然是应用服务器市场的跟随者JBoss和OracleQ一斚w凭借ORM的先天优势,另一斚w有出头机?x)也不能放过QEJB3委员?x)几乎成了JBoss和Oracle的天下。特别是JBossQ更加积极推出JBoss Seam框架Q希望确立以JSFQEJB3的架构树(wi)立Java开发的标准Q用以取代Struts/Spring/Hibernate的流行组合,因而开启了EJB3和Spring 正面交锋的战争?br /> Java Vendor中另外一股势力Sun公司q两q则一直自不暇,在应用服务器领域几乎退出市场,直到最q才搞出来一个GlassfishQ在开发框枉域也一直毫无徏?wi),推出的JSF至今q很不成熟,难担大QQ也许Sun都去忙着开源Solaris和JVM源代码了?br /> 几个大的Vendor或战略{型,或自不暇,或忙于收?Oracle)QJava开发领域的L打扫一I,对决的双Ҏ(gu)成了Spring和JBoss。对决的武器则是spring vs Seam?br /> Spring代表了不遵@通用标准Q自己制订游戏规则,不依赖容器的一方;JBoss代表了遵循通用标准Q但是锁定容器的一斏V这场对决从2004q?月就开始上演,未来很长旉也会(x)l箋下去。不qSpring已经站在优势很大的地位上了。我个h觉得Spring?x)胜场对冻I而Java企业应用开发的L技术将倒向Springq一边,而Vendor们官方制订的标准被开发h员可怜的遗弃C辏V开源技术开始决定Java企业开发的未来走向?br /> 大致Ҏ(gu)一下两者:(x)Spring vs EJB3Q就?x)发现Spring从功能上面已l胜出很多了Q?br /> 1、IoC容器spring胜出
Spring的IoC容器很强大,其bean理功能过了目前EJB3容器Q配|方面SpringE微复杂一些。不q对于全局性配|来_XML要优于EJB3的annotation?br /> 2、AOP能力Spring胜出
EJB3目前提供的AOP功能非常单,本来已经无法和Spring相比Q至于集成AspectJ的Spring2.0Q就更加望尘莫及了?br /> 3、事务管理方面EJB3E微领先
Spring提供了很的本地事务模型Q也可以集成JTAQ但是不支持分布式事务,当然q种场景也非常罕见?br /> 4、Web框架spring胜出
EJB3标准集成JSFQ但是JSFq不成熟Q和AJAX配合度也不好。Spring可以灉|集成各种Web框架和模板语aQ自w也提供了相当强大的MVC框架Q要是这q觉得不够,那么spring webflowQportlet support都拿出来Q那么EJB3必败了?br /> 5、远E访问支持,大致持^
EJB3l承了传l的EJBq程讉K能力QW(xu)eb Services支持也不错;不过Spring提供了更多更灉|的选择QJava RPCQHTTP InvokerQHessian/BurlapQW(xu)ebServices?br /> 6、框枉成能力,spring胜出
q是spring的传l优劉K目,只要看看spring modules目Q看看n多第三方spring支持Q就?x)发现spring现在的群众基多么好,集成工作,spring modules已经提供了方便的模板c,集成规则引擎QCacheQCMSQ脚本语aQ异步Q务,安全验证框架。。。。。。EJB3有点望尘莫及的味?br /> 7、JMSQJMXQJCA{,EJB3领先一?br /> q些传统EJB优势目往往应用的不太多QEJB3仍然是领先的。不qoZ目的是,Spring最q几个版本在q箋q赶EJBq些传统优势领域Q到Spring2.0为止Q其JMSQJMXQJCA支持已经相当不错了,可以说传lEJB能够做的Q现在Spring也可以做得到Qؓ(f)Spring一l江湖扫清了最后的障碍?br /> q几q除了Spring框架自n不断完善和g伸到传统应用领域Q围l在Spring周围的第三方框架也是来丰富,EJB3在annotation斚w有些独到的优势,在一些传l领域,q领先springQ但是M来说QEJB3为核心的J2EE5.0规范很难和Spring现在?.0相匹敌,更何况Java的主力Vendor早已醉翁之意不在q里了,单凭JBoss的SeamQ难以战胜spring?br /> 我觉得Spring可能?x)越来越LQ甚臛_始引领Java企业开发的未来发展道\QJ2EE靠边站吧,也许JavaC也到了开源社了算的时代了?/div>
|