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在国内还没有商业技术支持
- 浏览: 315388 次
文章分类
- 全部博客 (308)
- Apple (1)
- MAC (6)
- iPhone (1)
- iOS (1)
- Adobe (3)
- Microsoft (23)
- Windows (12)
- WAP (2)
- CMPP (6)
- Eclipse (5)
- .NET (13)
- Router (3)
- ADO.NET (2)
- C# (11)
- WPF (3)
- SqlServer (4)
- Facebook (2)
- JDBC (1)
- Visual Studio (10)
- ActiveMQ (9)
- Java (112)
- Memcached (2)
- NoSQL (7)
- Hadoop (9)
- GlassFish (2)
- Linux (98)
- CentOS (58)
- Spring (10)
- Oracle (17)
- JBOSS (12)
- Webservice (4)
- EJB (7)
- DFS (1)
- Hibernate (9)
- Redis (3)
- Tomcat (5)
- Python (8)
- FastDFS (6)
- Nginx (6)
- RabbitMQ (0)
- Erlang (0)
- Lucene (8)
- Solr (7)
- MySQL (1)
- JavaScript (0)
最新评论
-
zhangy888:
你好,我正好也遇到了这个问题,按照您的设置有如下几个问题,请帮 ...
CXF SOAP 1.2 SOAP 1.1 问题 -
u011493586:
这个SUBMIT写的还不错,只是有的地方没看懂
CMPP发送超长短信息(JAVA版) -
u011493586:
...
CMPP发送超长短信息(JAVA版)
发表评论
-
遍历Map的四种方法
2015-01-28 11:14 432public static void main(Stri ... -
使用Perf4J进行性能分析和监控
2015-01-13 11:39 680许多开发人员都很熟悉墨菲法则的一个例子:他们发现在花费了大量 ... -
Nexus创建本地Maven仓库
2014-09-22 10:58 13530.安装环境 windows 7 x86-64 jdk1 ... -
HBase vs Cassandra: 我们迁移系统的原因
2014-09-03 21:13 722原文: http://ria101.wordp ... -
开源日志系统比较
2014-09-03 21:11 483作者:Dong | 新浪微博:西成懂 | 可以转载, 但必须 ... -
tokyotyrant-java客户端
2014-07-25 09:48 763目录: 概述 演示 [一]、概述 java实现了 ... -
IntelliJ IDEA 13试用手记(附详细截图)
2014-06-30 16:04 500从去年开始转java以来,一直在寻找一款趁手的兵器,ecl ... -
Heritrix使用的初步总结
2014-06-14 16:45 485一、框架介绍 公司最近项目要用到全文检索,检索对象是 ... -
利用 Heritrix 构建特定站点爬虫
2014-06-14 15:19 484本文由浅入深,详细介 ... -
Errors running builder 'DeploymentBuilder' on project
2014-06-09 14:20 6211.修改java源代码后点击保存,IDE 自动编译并热部署, ... -
开源中间件大舞台
2014-05-22 09:27 657全文主要内容:一、中间件是什么?二、中间件的主要作用三、中间 ... -
log4j使用DailyRollingFileAppender
2014-05-20 15:30 624DailyRollingFileAppender是 ... -
JVM系列四:生产环境参数实例及分析
2014-05-18 11:04 395java application项目(非web项目) ... -
solr中如何定义自己的解析器插件(QParserPlugin)
2014-05-15 13:39 1272/***************************** ... -
Lucene 基础理论
2014-05-15 11:43 7451. 全文检索系统与Lucene简介 1.1 什么是全 ... -
Lucene 4.0升级指南
2014-05-15 11:33 1200Apache Lucene Migration Guide ... -
Lucene的分析过程
2014-05-13 15:18 750回顾倒排索引的构建 收集待建索引的原文档(Do ... -
Lucene中文分析器的中文分词准确性和性能比较
2014-05-13 15:17 559对几种中文分析器,从分词准确性和效率两方面进行比较。分析器 ... -
CharTokenizer对西文字符进行分词处理
2014-05-12 22:00 523CharTokenizer是一个抽象类,它主要是对西文字符进 ... -
LUCENE3.0 自学吧 7 CharTokenizer
2014-05-12 21:58 490CharTokenizer 是一个抽象类,它主要是对 ...
相关推荐
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 应用服务器: Jboss5.1 数据库用: Oracle9i 部署前将 demo-service.xml和oracle-ds.xml copy到jboss deploy目录下,配置到你的环境下即可 -- Create sequence ...
5. **JSR-250注解支持**:Spring 2.0开始支持JSR-250标准注解,如`@PostConstruct`和`@PreDestroy`,使得初始化和清理方法的标记更为直观,与EJB3.0兼容性增强。 6. **国际化(Internationalization, i18n)**:...
6. **Java 5和Java EE 5兼容性**:Spring 2.0全面支持Java 5的新特性,如泛型、枚举、注解等,并且能很好地与Java EE 5规范中的EJB 3.0、JSF等技术结合使用。 通过研究《精通Spring 2.0源代码》提供的源码,我们...
5. **支持更多的 J2EE 技术**:除了传统的 J2EE 技术之外,Spring 2.0 还增加了对 EJB 3.0、JSF 等新标准的支持。 6. **国际化和资源加载器改进**:Spring 2.0 改进了资源加载器,支持更灵活的国际化配置。 #### ...
EJB3.0引入了注解驱动的编程模型,简化了EJB的使用,使得开发者无需编写大量XML配置文件。 例如,一个简单的Session Bean可能如下所示: ```java @Stateless public class UserService { @PersistenceContext ...
- **支持JSR-250**:引入了对企业JavaBeans(EJB)3.0规范的支持,如`@PostConstruct`和`@PreDestroy`注解,简化了初始化和销毁方法的标记。 3. **Spring 2.0的注解** - `@Autowired`:自动装配bean,根据类型或...
Spring2.0版本进一步增强了对Java EE标准的支持,包括EJB 3.0、JPA等,同时也改进了MVC框架和Web服务支持。 ### Web开发相关技术 #### Ajax、JSP和Servlet - **Ajax**:异步JavaScript和XML的缩写,是一种在无需...
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...
在经历了 Spring 2.0(2006年10月发布)和 Spring 2.5(2007年11月发布)两个重要版本后,Spring 3.0 应运而生。作为一次重要的升级,Spring 3.0 在多个方面进行了改进和增强,为开发者提供了更多便利的功能与工具。...
随着时间的推移,EJB经历了多个版本的迭代,其中最著名的包括EJB 2.0和EJB 3.0。EJB 2.0引入了容器管理实体Bean(CMT)和消息驱动Bean(MDB),而EJB 3.0则大幅简化了开发模型,引入了注解,使得EJB开发更加简单直观...
Spring3.0帮助文档.Spring是一个开源框架,Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
总的来说,EJB作为Java EE的一部分,为企业级应用提供了强大的组件模型,尽管它在过去因复杂性而受到批评,但在EJB3.0及其后续版本中,EJB已经变得更加灵活和易用,仍然是构建大规模分布式系统的重要工具。
首先,Spring 3.0引入了对Java EE 6的支持,包括对JSF 2.0、JPA 2.0和EJB 3.1等规范的全面支持。这使得Spring框架可以更好地与现代企业级Java环境集成,提供了一个统一的编程模型,降低了开发者的学习曲线。 其次,...
- **支持JSR-250和JSR-303**:Spring 2.0引入了对JSR-250(Common Annotations for the JavaTM Platform)和JSR-303(Bean Validation)的支持,简化了组件管理和数据验证。 2. **JPA 简介** - **ORM概念**:JPA...
- 提供了对EJB 3.0的集成,使得混合使用EJB和Spring组件成为可能。 综上所述,Spring 2.0作为一个里程碑式的版本,不仅强化了核心功能,还引入了诸多创新特性,极大地推动了Java企业级应用的发展。通过深入学习和...
5. **EJB3.0的关联**:虽然EJB 3.0不是一个主要技术,但可能会看到一些EJB的轻量级替代,比如使用`@Stateless`或`@Singleton`注解的无状态会话bean,它们在Spring容器中以类似的方式工作。 6. **部署和测试**:将...
- 随后的EJB 3.0版本引入了注解(Annotations),极大地简化了开发过程,并且更倾向于POJO(Plain Old Java Object)风格,降低了学习和使用门槛。 5. EJB与现代框架的对比: - 现代框架如Spring和Java EE 7以后...
《[spring2.0技术手册].林信良.扫描版.pdf》则可能是一本由林信良编著的Spring 2.0技术手册,这本书可能包含了Spring 2.x系列的详细教程和实践案例。Spring 2.0是Spring框架的一个里程碑版本,它引入了Spring MVC,...
此外,3.1版本还提供了更好的类型安全性和对EJB 3.0的兼容性,使得企业级开发更加便捷。 这个"spring2.5 struts2.0 hibernate3.1完美全部jar包.rar" 文件包含了这三个框架的完整库,便于开发者在项目中直接引用,...