自从我担任技术决策职务以来已经过去了一年多,很高兴看到我仍然与之保持着完美的和谐。 几个月前,我在KaiWähner的一个不错的博客中写了一个有关JEE与Spring的答案。 如果观点没有不同,那么讨论的附加值在哪里? 我确实同意Kai的许多观点。 但是,对我而言,它不是Java EE *或* Spring(如最近这篇文章中所建议的),也不是功能的问题,因为最终,功能在两种体系结构选项(及其相应的生态系统)中都进行了很好的分类。 如果缺少某些东西,那里的人已经编写了一个好的库并将其开源。 这也不是“重量重”或“重量轻”的问题。

几年后,由于向下兼容性要求,任何框架都将承担一些固定费用。 由于这些原因,本博客将不是有关Spring和Java EE的内容和原因的技术文章。 首先,我认为整个问题归结为您要在其中放置用作开发API的框架库以编写业务应用程序的问题:在服务器库目录中,或在WEB-WAR / EAR文件中INF / lib。

图2:Spring和Java EE应用程序的简化开发架构

Spring和“纯” Java EE应用程序之间最大的相关差异在于,Spring应用程序中的开发框架API是部署到任意Java运行时的Java应用程序(WAR或EAR文件)的一部分。 相反,纯Java EE应用程序仅包含业务代码,并且应用程序框架是应用程序服务器的一部分。 因此,业务应用程序直接在应用程序服务器API上工作。 除了这些纯粹的方案外,当今的大多数Java企业应用程序还使用Java EE和Spring API的混合。 几乎可以在任何不同的主题(Web服务,IoC容器,GUI等)中做出Java EE *或* Spring决策。

还有针对Java EE和Spring应用程序的纯运行时环境:兼容Java EE的服务器(Redhat JBoss,IBM WebSphere,Oracle WebLogic)和VMWare的vFabric tc Server。 因此,在一个绿色领域,人们可以选择纯Java EE应用程序体系结构而不是纯Spring应用程序体系结构。 但是,如前所述,大多数应用程序都是混合运行的。 我尚未进行过评估,但是我怀疑许多应用程序在带有Spring IoC容器的Java EE或Tomcat服务器环境中运行。 与其使用* only * Java EE或完整的Spring堆栈,不如使用成熟的Java EE和Spring API的均衡组合来实现。

Java EE的优势是各方在书面过程中建立的开放标准。 因此,尽管许多项目仅使用少量的Java EE API,但为此平台构建应用程序却非常受欢迎。 需要注意的另一个重要事实是,每个(明智的)Java打包软件供应商都支持主要的Java EE平台。 因此,许多大型企业无论如何都在内部托管Java EE服务器。 到那时,就可以在Java EE服务器上运行Spring应用程序了。 这种设置可以为生产中有数十甚至数百个Java应用程序的企业提供好处。

1 –迁移JEE服务器要容易得多,因为应用程序*直接*使用更少的服务器API。
2 –为了减少迁移成本,大多数内部客户将决定将其业务应用程序迁移到当前服务器版本。
3 – IT环境中的服务器数量减少了,生产中Java版本的数量减少了,本地开发环境的数量也减少了,更简单的ALM解决方案–总而言之:可管理的复杂性和更统一的环境。 4 –快速响应新的客户端需求:如果您需要新的(Spring)功能,则只需编译新版本的WAR / EAR文件,然后将其部署到任意Java运行时。 5 –与Java EE完整堆栈相比,潜在目标运行时环境的范围将更大。 这意味着您可能独立于“更多”平台。 6 –使用Spring,您可以在应用程序或服务器环境中增加较小的功能(避免:滚雪球效应)。 7 –与Java EE相比,完整的创新周期更快(从功能请求到生产中的使用)。 8 –根据实际的实际客户项目要求对Spring进行了增强,以确保其实际适用性。 9 –应用程序开发团队对应用程序开发堆栈负责,并可以灵活地决定哪种API可以满足客户的需求。

在纯Java EE开发堆栈中很难实现所有这些好处(其中一些解决了Java EE中的概念性问题)。 一种可能的选择是模块化JEE应用服务器体系结构。 像Java SE中一样,模块化是标准。 考虑发布过程(即JCP)也可能是有效的。

就像我之前说的,我确实相信从来没有像现在这样反对JEE,因为这两个选项在很多情况下都可以和谐地协同工作。 今天,仍然可以同时使用Spring和Java EE,就像我在其他博客文章中所解释的那样。 我相信过去的重要讨论更多地是针对我们的业务应用程序的编程模型:CDI与Spring IoC以及JSF与Spring MVC。 辩论通常也是关于是否喜欢“ EJB”的情感辩论(出于历史原因)。 此外,您的业务应用程序与基础平台(服务器,操作系统,硬件)的“真实”独立性有很多。 例如:我们使用EJB作为集成技术,但是业务应用程序对此一无所知。 平台独立性的关键不是使用Java EE还是使用Spring,而是:合理地决定在业务应用程序编程模型中直接使用哪些API。 有时最好不要使用一些application-server-lib-directory派生的目录。

参考:为什么我会在2012/2013年继续通过我们的JCG合作伙伴 Niklas在新的Enterprise Java项目中使用Spring *和* Java EE。

翻译自: https://www.javacodegeeks.com/2012/05/why-i-will-continue-to-use-spring-and.html

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

  1. 为什么我会在2012年的新企业Java项目中使用Java EE而不是Spring

    这个问题经常出现. 我的新项目也在2011年11月发布. 在这个新的Enterprise Java项目中,我将使用Java EE(JEE)代替Spring框架. 我知道:关于此主题的文章,博客和论坛讨 ...

  2. 中国石油大学华东2013-2014-1c语言a卷_答案,中国石油大学(华东)2012—2013学年第二学期期中A卷试卷答案...

    2012-2013学年第二学期 <大学物理(2-1)>期中考试A卷答案 一.选择题(共30分) 1.C 2.D 3.D 4.A 5.B 6.B 7.C 8.B 9.A 10.C 二.简单计 ...

  3. c语言编辑 显示atd数在led上,2012 - 2013 学年第1学期《单片机原理及应用》课程答题纸 1_5.doc...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp高等教育&nbsp>&nbsp工学 2012 - 2013 学年第1学期<单片机原理及 ...

  4. 转载:WPS 2012/2013 RTF fchars 堆溢出漏洞分析

    WPS 2012/2013 RTF fchars 堆溢出漏洞分析 On 2013年12月11日, in 安全分析, by code_audit_labs by phperl ,zzf,nine8 of ...

  5. VC运行库合集2005/2008/2010/2012/2013/2015

    VC运行库合集2005/2008/2010/2012/2013/2015,批处理一键安装(需管理员权限) 链接:http://pan.baidu.com/s/1bpLZoFt 密码:bnk8 转载于: ...

  6. Visual Studio 2013 添加一般应用程序(.ashx)文件到SharePoint项目

    默认,在用vs2013开发SharePoint项目时,vs没有提供一般应用程序(.ashx)的项目模板,本文解决此问题. 以管理员身份启动vs2013,创建一个"SharePoint 201 ...

  7. java fri星期转_如何在Java中将“Fri Sep 21 15:23:59 CEST 2012”转换为“2012-09-21T15:23:59”?...

    四点: 如果可以的话,您更愿意使用Java 8中引入的较新的日期和时间类(并且还向后移植到Java 6和7)而不是旧的SimpleDateFormat. 您应确保提供的语言区域与星期几和日期字符串中的 ...

  8. Visual C++ 2012/2013的内存溢出检測工具

    在过去,每次编写C/C++程序的时候,VLD差点儿是我的标配.有了它,就能够放心地敲代码,随时发现内存溢出. VLD最高可支持到Visual Studio 2012.不知道以后会不会支持Visual ...

  9. 2012,2013年总结:在视音频技术道路上摸索

    2013年已经过去了,看到很多人写了各种的总结,感觉这种习惯很值得提倡. 其实每个人都是一部故事,有自己的时间地点人物事件.过去我一直忽略了这一点,从来不记录任何东西.高中的时候我语文不太好,尤其是作 ...

最新文章

  1. 李彦宏,韩寒等入围本年度《时代百人》候选名单
  2. 3年工作必备 装饰器模式
  3. Struts2_day02--封装数据到集合里面
  4. 【特征匹配】BRISK原文内容翻译
  5. 【Java】如何较好地将int转化成String
  6. k8s自定义指标HPA实践(微服务基于自定义指标自动扩缩容的实践)附demo
  7. iOS开发之UITableView自定义Header视图和自定义Footer视图
  8. loadRunner12压力测试工具使用流程
  9. SSL P2711 正方形
  10. 【整理】一个真实的图灵:如迷的解谜者,并非万事成谜
  11. 珠峰海拔8848米,现在有足够大的纸,厚度是0.01米,折多少次高度可以超过珠穆朗玛峰。(JavaScript)
  12. 用健身的思维来对待学习
  13. mysql 全角空格_数据库使用技巧――SQL全角与半角切换_MySQL
  14. 泰国地图高清中文版 电子版​
  15. 直播系统开发语音源码功能开发
  16. 最简单的方法!UEFI引导+GPT分区安装win10+Ubuntu16.04双系统
  17. python inchat库下载_LearnPython/python_wechat.py at master · oxtaw/LearnPython · GitHub
  18. 图鉴:《100名互联网公司老板采访实录》
  19. java双端队列工作密取,同步器皿、并发容器、阻塞队列、双端队列与工作密取...
  20. [MSSQL]双重游标的使用以及动态游标的使用

热门文章

  1. tomcat(19)Manager应用程序的servlet类
  2. javafx 图标_JavaFX技巧32:需要图标吗? 使用Ikonli!
  3. spring序列化_使用@JsonIdentityInfo的Spring自定义序列化器
  4. java登录界面命令_Java命令行界面(第18部分):JCLAP
  5. 滑动拼图验证码操作步骤:_拼图项目:一个不完整的难题
  6. 1.0jpa 2.0_JPA 2.1如何成为新的EJB 2.0
  7. 2015年传智播客java_2015年Java 8强势开始
  8. Java 14:查看更新的switch语句
  9. MicroProfile 2.2 BOM导入支持
  10. jaxb 映射 空字段_推土机:将JAXB对象映射到业务/域对象