这篇小文章的初稿标题为“ Spring&Java EE –比较苹果和橙子”。 在撰写本文时,我了解到可以比较Spring Framework和Java EE,但这始终是不公平且不完整的工作。

Java for Enterprise和Spring Framework的发展紧密地联系在一起。 两者相互依存,部分复制了好的概念。 在表1中,您可以看到一个简化的时间表,其中包含Java平台企业版和Spring框架的一些关键里程碑。

该表说明,仅将Java EE v6与Spring v3.0进行比较是有意义的。 Spring Framework和J2EE的早期版本已过时,并且Java EE v7仍未发布(实际上延迟到2013年第二季度 )。

表1:Java平台和Spring框架的时间表

Java平台,标准版 Java平台企业版 Spring框架 关键 里程碑
2000 J2SE v1.3 J2EE v1.2.1 EJB 2
–困难的部署描述符
–困难的测试 –很多多余的工件
2001 J2SE v1.3
2002年
2003年 J2SE v1.4 J2EE v1.4
2004年 Springv1.0 第一个Spring框架
–依赖注入(IoP)
–没有Java EE应用程序服务器 -J2EE的竞争对手
2005年 Springv1.2
2006年 J2SE v5 Java EE v5 Springv2.0 Java EE 5(EJB 3.0)
–许多功能受Spring启发
–消除了组件,家庭和远程接口
2007年 Springv2.5
2008年
2009年 Java SE v6 Java EE v6 Springv3.0 Java EE 6(EJB 3.1)
–接口是可选的
–单例豆 –类似cron的调度 –嵌入式容器 Spring3.0 –Spring表达语言 –具有改进的REST支持的MVC框架
2010年
2011年 Java SE v 7 Spring v 3.1

因此,在表2中列出了Spring Framework的主要构建块。 控制容器的反转是Spring框架的核心功能。 要了解其工作原理,您还可以检查一个基于Spring框架的最小Java应用程序 (示例代码使用Spring 2.5.6.A,但主要原理与Spring 3.0相同)。

表2:Spring v3.0框架的选定构建基块

控制容器倒置 –控制反转
–依赖注入
–使用XML文件和/或注释进行配置(自动接线)
模型-视图-控制器框架 –域对象(模型)
-通常,JSP模板(视图)
-DispatcherServlet作为Controller的前控制器
面向方面的编程框架 –涉及各方面问题的基本AOP
–基于拦截,并在运行时进行配置
–使用XML文件和/或注释进行配置
批处理框架 -处理大量的记录或任务,包括:日志记录,跟踪,事务,作业管理,资源管理,异常转换
数据访问框架 –为流行的框架提供支持
– JDBC,iBatis,Hibernate,JDO,JPA,Oracle TopLink,Apache OJB和Apache Cayenne
交易管理框架 –抽象机制(JTA仅支持嵌套事务和全局事务,并且需要应用程序服务器)
远程访问框架 –使用Java平台上可用的各种基于RPC的技术来进行客户端连接和在服务器上导出对象

来源和进一步阅读: http : //en.wikipedia.org/wiki/Spring_Framework

在表3中,列出了Java平台企业版6的主要标准和组件。 该表清楚地表明Java EE 6包含许多标准,而不仅仅是一个框架。

表3:Java EE 6体系结构的选定构建块

图片来源 Java EE 6教程 ,p39

客户端机器
– Java Server Faces(JSF 2.0)
– JSP标准标记库(JSTL) –具有JavaServer Faces技术的Ajax – Facelets(XHTML) –支持表达语言(EL) –组件和页面的模板 – Java Servlet技术(Servlet 3.0) –国际化和本地化Web应用程序 Java EE服务器 – Enterprise JavaBeans(企业Bean)组件 – JAX-RS RESTful Web服务 – JAX-WS Web服务端点 –企业Bean作为POJO(会话和消息驱动) –作为POJO的托管Bean –拦截器 – Java依赖注入(JSR 330) –上下文和依赖注入,CDI(JSR 299) –最小化部署描述符需求的注释 –会话Bean中的异步方法调用 –声明和程序安全 – Java消息服务(JMS)API – Java持久性API实体 坚持不懈 – Java数据库连接API(JDBC) – Java持久性API 2.0 – Java EE连接器体系结构 – Java交易API(JTA)

来源和进一步阅读: http : //olex.openlogic.com/wazi/2010/get-started-with-jee6/

实践经验

几年前,当我开始学习Spring Framework 3.0时,我实现了一个带有许多Spring功能的小型Web应用程序。 老实说,这比完成这项任务所必需的更多。 这个小型应用程序具有用于单元和集成测试自动化的大量测试代码。 它具有100%的线路和分支覆盖率。 一段时间后,我决定基于Java EE 6架构实现完全相同的应用程序以比较这两种方法。这两种技术都运行良好,代码大小几乎相同,并且具有良好的可维护性。
一个重要的区别是对测试的支持。 Spring Framework对测试提供了出色的支持,而Java EE 6在此存在一些弱点。 对于Java EE 6,您可以使用Embedded Glassfish,但是这种方法烦人(缓慢(嵌入式容器的启动时间很长))并且配置麻烦。 Spring Framework的另一个突出功能是易于集成旧应用程序。 逐步地更新旧应用程序比较容易,例如,一开始就使用JDBC,事务管理和IoC的一小部分。

结论

  1. 从体系结构的角度来看,Spring和Java EE的模型是竞争者。 取决于组织的策略和约束,两者都会显示出优点和缺点。
  2. 通常不建议将两者结合使用,因为这既浪费EJB容器功能和/或难以维护。 在某些选定的情况下,在Java EE 6应用程序中使用Spring Framework的Building Blocks是有意义的,例如Spring Batch,Data Access。
  3. Spring框架不是标准-它是框架的产品和实现。 这意味着,没有其他供应商。 请记住这一点。

参考: 轻量级Java企业体系结构– Spring 3 Framework与Java EE 6之间的不公平且不完整的比较,来自我们的JCG合作伙伴 Markus Sprunck,位于Software Engineering Candies博客上。

翻译自: https://www.javacodegeeks.com/2012/05/spring-3-and-java-ee-6-unfair-and.html

Spring 3和Java EE 6 –不公平和不完整的比较相关推荐

  1. Java EE 6 VS Spring 3:Java EE杀死了Spring? 没门!

    介绍 几天前,我在听Java Spotlight Podcast的第85集 . 在这次演讲中, Bert Ertman和Paul Bakker讨论了从Spring迁移到Java EE的问题. 基本上, ...

  2. Java EE 6 VS Spring 3:Java EE已经杀死了Spring? 没门!

    介绍 几天前,我在听Java Spotlight Podcast的插曲85 . 在这次演讲中, Bert Ertman和Paul Bakker讨论了从Spring迁移到Java EE. 基本上,在他们 ...

  3. 从Spring起,Java EE 6必须具备哪些附加功能?

    我是一名高级Java开发人员,必须研究应用程序架构师选择的技术. 我最多只能表达对特定技术的看法,不能做出/影响技术选择的决定. 因此,在我的正式项目中,我别无选择从Spring迁移到JavaEE6或 ...

  4. 从Spring开始,Java EE 6必须具备哪些附加功能?

    我是一名高级Java开发人员,必须研究应用程序架构师选择的技术. 我最多只能表达对特定技术的看法,不能做出/影响技术选择的决定. 因此,在我的正式项目中,我别无选择从Spring迁移到JavaEE6或 ...

  5. 读书笔记《Spring Boot实战 —— Java EE 开发的颠覆者》

    Spring框架是轻量级的企业级开发一站式解决方案 Spring使用简单的POJO Plain Old Java Object 无限制的普通Java对象 Spring Framework Runtim ...

  6. java ee架构_与Java EE和Spring的集成架构

    java ee架构 本周在纽约举行的O'Reilly软件体系结构大会将举行 . 我很高兴与Josh Long一起提供有关如何集成Java EE和Spring的教程. 一段时间以来,我们一直在开玩笑. ...

  7. 与Java EE和Spring的集成架构

    本周在纽约举行的O'Reilly软件体系结构大会将举行 . 我很高兴与Josh Long一起提供了有关如何集成Java EE和Spring的教程. 一段时间以来,我们一直在开玩笑. 某些人想到的对两种 ...

  8. 为什么在2012/2013年我将在新的Enterprise Java项目中继续使用Spring *和* Java EE

    自从我担任技术决策职务以来已经过去了一年多,很高兴看到我仍然与之保持着完美的和谐. 几个月前,我在KaiWähner的一个不错的博客中写了一个有关JEE与Spring的答案. 如果观点没有不同,那么讨 ...

  9. Bert Ertman专访:将Spring及遗留应用迁移到Java EE 6平台

    本文来源于我在InfoQ中文站的采访文章,原文地址是:http://www.infoq.com/cn/articles/migrate-spring-legacy-to-javaee6 InfoQ:你 ...

最新文章

  1. JavaScript Collection
  2. 干货 | 顾险峰:对抗生成网络的几何理论解释(附视频PPT)
  3. Spring MVC全局异常后返回JSON异常数据
  4. Mybatis和Spring集成 sessionFactory.openSession() 事务不生效问题
  5. java线上排查利器arthas
  6. 裁员之后人手却不够,马斯克和母亲只好亲自上阵帮忙了
  7. websql mysql_HTML5 Web SQL 数据库 | 菜鸟教程
  8. 消息循环,注册窗口,创建窗口【图解】
  9. 成功申请MVP,晒晒来自微软的奖品
  10. 最新python大数据毕业设计选题推荐(三)
  11. BubbleSort C#
  12. 【JZOJ】【数论】立体井字棋
  13. Android HttpClient介绍
  14. 教你如何用插件加速视频播放
  15. HDU2370——Convert Kilometers to Miles
  16. 访问网站报错‘您目前无法访问XXXX 因为此网站使用了 HSTS
  17. Android FFmpeg视频播放器三 音频封装格式解码播放
  18. GoldenDict词典软件和词典文件
  19. [组图]C++ SDK和Symbian开发入门之工具(转)
  20. 4.1.19 Flink-流处理框架-Flink中的时间语义和watermark水位线

热门文章

  1. JSON合并补丁程序:JSON-P 1.1概述系列
  2. swarm 本地管理远程_带有WildFly Swarm的远程JMS
  3. java与java ee_Java EE 8 MVC:全局异常处理
  4. aws sqs_在Spring中将AWS SQS用作JMS提供程序
  5. swagger api文档_带有Swagger的Spring Rest API –公开文档
  6. Spring MVC绑定,无设置器
  7. 坚实原则:Liskov替代原则
  8. jaas_受JAAS保护的JAX-RS端点
  9. 原始性能数字– Spring Boot 2 Webflux与Spring Boot 1
  10. PagingAndSortingRepository –如何与Thymeleaf一起使用