EJB3和Spring技术体系比较

随着EJB3规范以及支持EJB3的Java EE应用服务器的即将发布,全新Java EE体系架构的新 战争将拉开帷幕,在过去3年中如火如荼的Spring占据了Java EE应用开发基础平台的大半江 山,面对EJB3和Spring你应该如何选择呢?

作为一个架构师,我对EJB是既爱且恨,对Spring又恨又爱,现在我们来也把这两大技术 体系来做一个全面分析和对比,希望能给大家在进行技术选型时一个更好的参考。

1. 法制 VS “民主”

EJB规范一直由国际组织JCP来制定,一经通过,即作为官方标准,且各厂商都会不遗余力 的推动,所以对于企业应用来说,EJB就是法,以EJB为企业应用的基础架构暂且称为法治; Spring来自开源社区,由众多的开源软件开发者参与,逐步形成的一种流行的体系标准,它 的设计以IoC(反转控制)为核心,提倡所谓的“零”侵入设计原则,这里暂且称之为民主。

支持EJB的应用服务器一般是一个大而全的产品,包括了构建企业应用需要的方方面面, 如果需要额外扩展一般不容易,如果对一个应用服务器不满意的话,那么可以且也只能更换 整个应用服务器了,好在由于应用服务器市场百花齐放,从免费到低端再到高端,您可以任 意选择;Spring从IoC容器发展而来,通过不断集成AOP、MVC、OR/Mapping以及几乎您能想到 的各项服务而提供完善的企业应用架。对于一个应用,你可以自由选择具体的技术框架的实 现,SSH就是最常用一套组合,然而且不说是否每个架构师拥有正确选择的能力,无论如何, 最终的选择在设计之初一旦确定,要想更换便不那么容易,你不可能轻松的将一个基于 Spring + Struts的应用轻松的移植到Spring + WebWork,更不能轻松的将一个基于Spring + Hibernate的应用轻松的移植到Spring + iBatis,所以对于需要长期维护和发展的应用来说 ,将只能寄希望于你采用的框架都能够很好的发展,并且能在升级的同时保证向前的兼容性 。

综上所述,EJB由于对于整个世界是标准的,就好像是一部国际法,一旦遵循,全球通用 ,你可以比较轻松的在WebSphere、WebLogic甚至 JBoss之间进行切换,所以如果选择EJB, 你将在一个”法制”的环境下获得最大的民主;而Spring对于整个世界看似民主的,然而一 旦整套架构确定下来,却成了专制,犹如美国式的民主,一旦被它征服,就成为它的专政统 治了,想挣脱它的控制可就不那么容易了,其中的利害,大家细细品味吧。

2. 轻量级组件 VS 轻量级内核 VS 轻量级容器

关于轻量级内核,不论属实是否,现今的应用服务器都宣称采用了微内核技术,在此基础 上建立Java EE的各项服务构建成完善的应用服务器;而Spring本身就是一个基于IoC的轻量 内核,然后通过集成第三方的服务器来提供完整的架构。

EJB组件曾经被认为是一个重量级的组件,而备受批评,EJB3规范的重要目标就是简化EJB 的开发,提供一个容器管理的轻量级的组件方案。

但是有必要提醒一下,轻量级的组件,并不意味着提供服务的容器是轻量的,不管是EJB2 还是EJB3,应用服务器因为需要管理组件的负责生命周期以及行为,并且内置提供了各项服 务,容器自然是一个重量级的服务;至少现在看来,现有的Application Server提供的容器 都还不足够的轻量,从个人偏好来说,我就非常喜欢JBoss 2.4这个版本,它有我需要的功能 ,同时又够简单,而现在,JBoss 4的启动速度已经逐渐让我对它对失去了耐心。

而对于Spring,也有同样的问题,轻量级的内核,也不意味着整个框架是轻量的,更不意 味着基于Spring的整个应用架构是轻量的。对于 Spring,你需要去寻找并粘合各种服务,然 后让他们能够稳定的在一起工作,如果应用对技术的需求较多,伸缩性要求也较高,你就会 不断的在应用服务中加入其他服务,如:资源池、消息队列、集群等。当加入这些后, Spring的解决方案已经和Java EE Application Server解决方案一样重量级了。

追求简单、轻量,是每一个应用架构的目标,对于企业应用的构建来说,轻量级组件标准 +轻量的内核+轻量级的容器,并以此构建轻量级的应用平台,才是最终需要的。如果有轻量 级的容器出现,将帮助EJB3在企业应用中重新占据有利的地位。

3. 可管理性与可控性

这个问题对于一次性交付的项目也许不是问题,但是对于质量要求更高、生命周期更长的 产品,却是衡量平台和架构的重要因素。

基于Spring架构的应用,由于过分的自由和灵活,随着项目的进展,逐渐集成的第三方框 架越来越多,很难保证集成的服务和编写的组件中有没有漏洞,甚至相互之间有严重的冲突 ,那么,掌控整个项目的质量成了难题,光是一页接一页的配置文件,就知道今后的维护成 本也就随之增高,回想一下EJB2.0时代的ejb-jar.xml吧;而EJB因为集成的都是标准服务, 而且组件模型也是固定的,加之应用服务器一般提供控制台,用来查看运行时的各项属性, 并可对服务进行实时的管理,显然比Spring开发的应用可控性更好。

4. 功能性对比4.1 IoC容器,AOP能力

在IoC的能力Spring要略强一些,但是在EJB3中可以完全用Annotation方式进行注入,在 开发上要简单很多,对于一些相对比较固定的注入,采用Annotation更好,而对于一些可能 需要经常变动的注入,XML更加灵活,EJB3刚好提供了这样的两种解决方案。如果你已经患有 XML恐惧症,那么EJB3无疑将给您以解脱。

同时,EJB3组件中,支持多种方式注入,比如依赖于名称、接口或者JNDI名,另外还支持 使用@PersistenceContext注入 EntityManager,@Resource注入服务器资源,如EJBContext 、TimerService等,而一些Annotation已经成为JDK6的一部分,将来可能直接被JDK支持。

AOP方面,如果您需要彻底的AOP,并且在Spring中集成了AspectJ,那么EJB3自然无法比 拟,但是如果您的项目以够用为原则,只需要一般方法拦截意义上的AOP,EJB3提供的各种回 调方法应该可以满足您的要求了。

时间: 2016-04-30

EJB3和Spring技术体系比较的相关文章

[转] EJB 3和Spring技术体系比较

最近在学习EJB 3,对于SSH与EJB3,一直不太明白"即生瑜,何生亮?",今天无意看到一篇旧文,比较系统的对比了这二种技术架构,转载于此: 原文出处:http://www.51cto.com/specbook/223/46090.htm ------------------------------------------------------------------- 作为一个架构师,我对EJB是既爱且恨,对Spring又恨又爱,现在我们来也把这两大技术体系来做一个全面分析和对比

《Spring技术内幕》——1.2节Spring的设计目标

1.2 Spring的设计目标 如果我们要简要地描述Spring的设计目标,可以这么说,Spring为开发者提供的是一个一站式的轻量级应用开发框架(平台).作为平台,Spring抽象了我们在许多应用开发中遇到的共性问题:同时,作为一个轻量级的应用开发框架,Spring和传统的J2EE开发相比,有其自身的特点.通过这些自身的特点, Spring充分体现了它的设计理念:在Java EE的应用开发中,支持POJO和使用JavaBean的开发方式,使应用面向接口开发,充分支持OO(面向对象)的设计方法.

潘再生:智能制造的综合技术体系和中控方案

近日,2017 世界机器人大会人工智能与机器人青年创新创业专题论坛在京召开,本次论坛由中国电子学会-嵌入式系统与机器人分会主办,雅瑞资本.真格基金.立德共创承办,并由多家大学.创投机构.新型企业联合支持. 在下午的论坛主题演讲中,浙江中控集团研究院副院长潘再生以<信息物理系统与智能工厂>为题作了演讲. 以下为刘连庆演讲内容,雷锋网做了不改变原意的编辑: 信息物理系统 首先,信息物理系统是什么?信息物理系统从概念提出到现在已经有很多年了,这里面我简单地从一个地方摘取来的,从信息和物理这两个系统怎

微服务实践:全栈小团队“洪荒之力”改造阿里服务CRM技术体系

本文不重点介绍业务系统,更偏重于经验分享.首先进行了业务介绍,接着和大家简单分享了微服务,着重和大家讲述了微服务的实践,包括微服务技术实践.微服务团队实践.DT下的微服务. 以下为内容整理: 作为全球最大的电商平台,阿里巴巴面对的是逾4亿的活跃消费者.上千万的活跃商家.几千种阿里自有产品和业务,以及每天上千万笔的交易.从这些天然交易闭环里,有极其丰富的数据,如何用技术来实现用户的"One-Click"和"One-Stop"的服务体验? 通过微服务架构的应用,我们重构

加速深根技术土壤,建立全面技术体系,转变思路方式,引创潮流新作。。。

加速深根技术土壤,建立全面技术体系,转变思路方式,引创潮流新作...

工信部印发《太阳能光伏产业综合标准化技术体系》

工业和信息化部办公厅关于印发<太阳能光伏产业综合标准化技术体系>的通知 工信厅科[2017]45号 各省.自治区.直辖市及计划单列市工业和信息化主管部门,相关行业协会.标准化机构和技术组织: 为进一步促进太阳能光伏产业的健康有序发展,大力提升标准对产业发展的指导.规范.引领和保障作用,我部组织制定了<太阳能光伏产业综合标准化技术体系>.现印发给你们,请结合实际,抓好贯彻落实. 附件:太阳能光伏产业综合标准化技术体系 工业和信息化部办公厅 2017年4月25日 (联系电话:010-6

张新波 | 十面埋伏 - 论大数据风控技术体系的构建

2017.3.11,中生代技术嘉年华在上海盛大召开,6大主题.20话题,600多位小伙伴点燃现场,我们将会陆续将各话题整理发布,让大家共享这场技术盛筵. - 中生代技术嘉年华 - 张新波,同盾联合创始人&技术VP,为大家带来"十面埋伏 - 论大数据风控技术体系的构建" 主题分享,欲听详情,点击现场视频 同一个成语 - 十面埋伏,不同的场景有不同的含义 经验总结: 规则的可视化编辑 规则变更时实时生效 不同的规则应对不同的风险等级 复杂场景需要针对性的高级功能 规则测试 多维度存

三丰智能:技术体系完善,产品种类丰富

湖北三丰智能输送装备股份有限公司是国内最早从事智能输送成套设备研发设计.制造.安装调试与技术服务的企业之一,自成立以来不断丰富完善产品品种,提升产品技术含量,目前公司智能输送成套设备涵盖空中.地面输送两大类别,共11大系列.50余个品种.120余种规格,已形成较完备的产品体系,能满足不同行业客户个性化的智能输送要求. 公司拥有自行小车悬挂输送系统等核心产品的完整技术体系,形成了核心竞争优势.公司自主研发的"单轨小车控制系统总线控制技术"."双轨小车悬挂输送机"和&q

《Spring技术内幕》——第一部分

第一部分 Spring核心实现篇 第2章 Spring Framework的核心:IoC容器的实现 第3章 Spring AOP的实现 本篇将对Spring的核心IoC容器和AOP的实现原理进行阐述.IoC容器和AOP是Spring的核心,它们是Spring系统中其他组件模块和应用开发的基础.通过这两个核心模块的设计和实现可以了解Spring倡导的对企业应用开发所应秉持的思路,比如使用POJO开发企业应用,提供一致的编程模型,强调对接口编程等.对于这些Spring背后的开发思想和设计理念,大家都