Spring 3和Java EE 6 –不公平和不完整的比较
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的一小部分。
结论
- 从体系结构的角度来看,Spring和Java EE的模型是竞争者。 取决于组织的策略和约束,两者都会显示出优点和缺点。
- 通常不建议将两者结合使用,因为这既浪费EJB容器功能和/或难以维护。 在某些选定的情况下,在Java EE 6应用程序中使用Spring Framework的Building Blocks是有意义的,例如Spring Batch,Data Access。
- 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 –不公平和不完整的比较相关推荐
- Java EE 6 VS Spring 3:Java EE杀死了Spring? 没门!
介绍 几天前,我在听Java Spotlight Podcast的第85集 . 在这次演讲中, Bert Ertman和Paul Bakker讨论了从Spring迁移到Java EE的问题. 基本上, ...
- Java EE 6 VS Spring 3:Java EE已经杀死了Spring? 没门!
介绍 几天前,我在听Java Spotlight Podcast的插曲85 . 在这次演讲中, Bert Ertman和Paul Bakker讨论了从Spring迁移到Java EE. 基本上,在他们 ...
- 从Spring起,Java EE 6必须具备哪些附加功能?
我是一名高级Java开发人员,必须研究应用程序架构师选择的技术. 我最多只能表达对特定技术的看法,不能做出/影响技术选择的决定. 因此,在我的正式项目中,我别无选择从Spring迁移到JavaEE6或 ...
- 从Spring开始,Java EE 6必须具备哪些附加功能?
我是一名高级Java开发人员,必须研究应用程序架构师选择的技术. 我最多只能表达对特定技术的看法,不能做出/影响技术选择的决定. 因此,在我的正式项目中,我别无选择从Spring迁移到JavaEE6或 ...
- 读书笔记《Spring Boot实战 —— Java EE 开发的颠覆者》
Spring框架是轻量级的企业级开发一站式解决方案 Spring使用简单的POJO Plain Old Java Object 无限制的普通Java对象 Spring Framework Runtim ...
- java ee架构_与Java EE和Spring的集成架构
java ee架构 本周在纽约举行的O'Reilly软件体系结构大会将举行 . 我很高兴与Josh Long一起提供有关如何集成Java EE和Spring的教程. 一段时间以来,我们一直在开玩笑. ...
- 与Java EE和Spring的集成架构
本周在纽约举行的O'Reilly软件体系结构大会将举行 . 我很高兴与Josh Long一起提供了有关如何集成Java EE和Spring的教程. 一段时间以来,我们一直在开玩笑. 某些人想到的对两种 ...
- 为什么在2012/2013年我将在新的Enterprise Java项目中继续使用Spring *和* Java EE
自从我担任技术决策职务以来已经过去了一年多,很高兴看到我仍然与之保持着完美的和谐. 几个月前,我在KaiWähner的一个不错的博客中写了一个有关JEE与Spring的答案. 如果观点没有不同,那么讨 ...
- Bert Ertman专访:将Spring及遗留应用迁移到Java EE 6平台
本文来源于我在InfoQ中文站的采访文章,原文地址是:http://www.infoq.com/cn/articles/migrate-spring-legacy-to-javaee6 InfoQ:你 ...
最新文章
- JavaScript Collection
- 干货 | 顾险峰:对抗生成网络的几何理论解释(附视频PPT)
- Spring MVC全局异常后返回JSON异常数据
- Mybatis和Spring集成 sessionFactory.openSession() 事务不生效问题
- java线上排查利器arthas
- 裁员之后人手却不够,马斯克和母亲只好亲自上阵帮忙了
- websql mysql_HTML5 Web SQL 数据库 | 菜鸟教程
- 消息循环,注册窗口,创建窗口【图解】
- 成功申请MVP,晒晒来自微软的奖品
- 最新python大数据毕业设计选题推荐(三)
- BubbleSort C#
- 【JZOJ】【数论】立体井字棋
- Android HttpClient介绍
- 教你如何用插件加速视频播放
- HDU2370——Convert Kilometers to Miles
- 访问网站报错‘您目前无法访问XXXX 因为此网站使用了 HSTS
- Android FFmpeg视频播放器三 音频封装格式解码播放
- GoldenDict词典软件和词典文件
- [组图]C++ SDK和Symbian开发入门之工具(转)
- 4.1.19 Flink-流处理框架-Flink中的时间语义和watermark水位线
热门文章
- JSON合并补丁程序:JSON-P 1.1概述系列
- swarm 本地管理远程_带有WildFly Swarm的远程JMS
- java与java ee_Java EE 8 MVC:全局异常处理
- aws sqs_在Spring中将AWS SQS用作JMS提供程序
- swagger api文档_带有Swagger的Spring Rest API –公开文档
- Spring MVC绑定,无设置器
- 坚实原则:Liskov替代原则
- jaas_受JAAS保护的JAX-RS端点
- 原始性能数字– Spring Boot 2 Webflux与Spring Boot 1
- PagingAndSortingRepository –如何与Thymeleaf一起使用