在Java社区中,Spring vs JavaEE是一个永无止境的争论。 在这样的辩论中,人们组成一个团体,由两个传播者,建筑师和一个平台的核心粉丝组成,并且不断进行辩论。 参与辩论的人可能是负责平台选择的架构师。 但是开发人员会如何看待这次Spring vs JavaEE辩论?

我是同时使用Spring和JavaEE的Java开发人员,并且不属于Spring或JavaEE粉丝俱乐部。 在这里,我想就这个史诗般的Spring vs JavaEE辩论分享自己的想法。

1.商业(有时是政治)方面

在许多组织中,技术选择可能并不完全取决于开发人员的选择。 更具体地说,如果您在所谓的巨型企业组织中工作,那么很有可能会有架构团队来决定在项目中使用哪种平台/语言/框架/库。

除此之外,大型企业在选择技术平台时还考虑以下方面:

  • 平台/语言/框架/库的成熟度
  • 商业支持
  • 许可费用等

作为开发人员,我几乎不能影响上述任何方面的决策过程,尤其是当我是离岸开发中心的开发人员时。 所以我不用太担心这些事情。

2.如果您真的很擅长Spring / JavaEE,那么学习另一门也不难

当有人说我是JavaEE专家但我听不懂Spring时,我总是感到惊讶。 JavaEE和Spring都在相同的核心API(Servlet,JPA,JMS,BeanValidation等)上工作,不同之处在于谁将Spring或AppServer粘合在一起。

即使对于诸如依赖注入(Spring DI,CDI),REST(JAX-RS,SpringMVC)等事物有一些不同的API,它们的外观和行为也非常相似。

也许有人可以说CDI比Spring DI更安全。 在以下情况下,Spring和CDI的行为不一样吗?

  • 如果只有一个Spring / CDI Bean,则使用@Autowired或@Inject进行注入可以正常工作
  • 当有多个Spring或CDI bean实现时,注入失败,并抛出错误:“找到了多个可以注入的合格bean”,注入失败。
  • 使用@Produces或@Bean注释方法将自定义对象提供为Bean提供程序

只要它们的行为类似,我不在乎它们是以类型安全的方式实现还是在其内部实现中使用基于String的映射。

怎样才能成为Spring的专家,却不懂JavaEE,反之亦然? Spring专家学习JavaEE需要花费多少时间?

3.对“ Average Joe开发人员”更友好

我认为,到目前为止,许多人应该已经意识到,一项技术的成功可能并不完全取决于其优点,还取决于开发人员的采用。 要实现的最重要的事情是“并非每个软件开发人员都是摇滚明星开发人员。 与热情的技术忍者相比,普通的joe开发者更多”。 因此,为了使人们适应任何框架,应该对“ Average Joe Developer”友好。

我认为Spring通过提供更多工具(如SpringBoot,用户指南等)在做得很好。SpringSecurity,Spring Integration,Spring XD,Spring Social很好地满足了现代业务需求。 还请考虑一下Spring提供的各种模板,这些模板使操作变得简单而无需担心样板代码。

通过引入JBossForge,Wildfly Swarm等快速入门,JavaEE也表现出色。 我遇到了一些基于JavaEE的框架,例如Picketlink,它满足了安全性要求,但是我觉得它比应该的要复杂得多。

我要传达的观点是“您可以使用Spring进行JavaEE中的几乎所有工作”。 区别在于,这让普通的joe开发人员可以立即使用。

4.没有上下文的La脚论点

每当Spring vs JavaEE辩论出现时,人们就会组成两个小组,并进行无休止的辩论。 不幸的是,辩论集中在一些无用或过时的观点上。

XML重:

JavaEE爱好者首先开始说Spring是XML的重头戏,我讨厌XML等等。 如果您仍在使用早于2.5版的Spring并假设它仍然基于XML,那么我的朋友应该醒来,并转到http://spring.io

EJB不好(或)JSF不好

Spring迷们像EJB 2.x或JSF 1.x一样猛扑EJB和JSF。 如果他们真的关注EJB 3.x和JSF 2.x,那么他们根本不会争论。 不要凭您6年的EJB2.x经验来判断EJB3.x。

重或轻

我对“重量”的解释是基于运行时的足迹。 据我所知,当您将托管bean部署到JavaEE容器中时,容器将代理它并注入所有企业服务(事务,安全性等),如果是Spring,它将由Spring AOP完成。

我没有任何度量标准可以说哪个是比较重的Container Proxy或SpringAOP Proxy,但是我想可能没有太大的区别。

有些人将战争档案的大小视为其“重量”。 在这种情况下,将(JavaEE AppServer + war)的大小与(带有126个jars的SpringApp)进行比较,看看哪一个重量轻:-)

JavaEE是基于标准的

拜托了伙计们!!!!

供应商锁定

我认为选择一个不会让您坚持某个特定供应商的平台是好的。 但是,仅基于迁移到其他实现的能力来选择选项是不正确的。 一年中从一台服务器切换到另一台服务器多少次? 选择一个不会与供应商锁定您的平台是“很不错的选择”,但这并不是选择平台的主要因素。

我们不需要外部库

这称为“为争辩而争辩”。 向我展示任何没有依赖关系的真实应用程序。 如果您说我要开发自己的日志记录库,我要编写自己的HTTP客户端,我要开发自己的通用工具,那么您需要寻找一些没有“重新发明”的懒惰的架构师/开发人员。所有轮子的疾病。

5.不要看着人群说“你们都是白痴,因为您使用X,所以应该迁移到Y”。

这是我在许多社区站点(尤其是Reddit站点)上观察到的常见模式。 只需发布与JavaEE vs Spring相关的任何内容,就会有两个小组像其他一样抨击另一个小组,因为另一个小组没有使用他们喜欢的平台。

想一分钟。 如果说Spring不好,为什么会有很多人使用它并喜欢它。 如果JavaEE不好,为什么会有很多人从Spring切换到JavaEE。 每个平台上都有很多好东西。 尊重他人选择他们选择的任何选项。 如果可能的话,请问他们为什么选择彼此的理由,并了解您是否错过了任何事情。

只是说“你们都是不使用我喜欢的选项的白痴”并不能使他们使用您喜欢的技术。 实际上,这触发了人们的想法,提出了您最喜欢的平台烂点的清单。

如果您确实希望他们切换到自己喜欢的平台,请通过代码示例显示原因。 向他们展示使用您喜欢的平台和示例应用程序开发应用程序有多么容易。 写更多有关常见问题及其解决方法的文章。 将“ Average Joe Developer”安装到您喜欢的平台上。

作为一个热情的Java开发人员,我阅读了Spring vs JavaEE的讨论,希望可能有一些我不知道的事情,例如“在哪个领域比另一个领域更好”。 但是我发现70%的讨论都是关于la脚的争论,这对我来说不是很有趣。

我希望Spring和JavaEE阵营之间的战斗越来越多,并使他们的平台比其他平台更好。 归根结底,无论谁赢得了辩论,最终开发人员都将拥有更强大的平台。

翻译自: https://www.javacodegeeks.com/2015/06/a-developers-perspective-on-spring-vs-javaee.html

开发人员对Spring vs JavaEE的看法相关推荐

  1. spring javaee_开发人员对Spring vs JavaEE的看法

    spring javaee 在Java社区中,Spring vs JavaEE是一个永无止境的争论. 在这样的辩论中,人们组成一个团体,由两个传播者,建筑师和一个平台的核心粉丝组成,并且不断进行辩论. ...

  2. 2021年最新调查:86% 的 Java 开发人员 依赖 Spring 框架

    >>号外:关注"Java精选"公众号,回复"2021面试题"关键词,领取全套500多份Java面试题文件. 自2003年发布以来,Spring Ja ...

  3. Spring MVC的DispatcherServlet – Java开发人员应该知道的10件事

    如果您使用过Spring MVC,那么您应该知道什么是DispatcherServlet? 它实际上是Spring MVC的心脏,确切地说是MVC设计模式或控制器的C语言. 应该由Spring MVC ...

  4. 简述基于JavaEE企业级开发技术(Spring)(1)

    一.绪论 1.学习内容 javaEE企业开发技术概述 javaEE容器--Spring ORM数据层--MyBatis/JPA Web层--Spring MVC 展现层--JSP/Thymeleaf ...

  5. spring一站式开发_Spring开发人员知道的一件事

    spring一站式开发 在最近的(核心)Spring框架培训课程中,有人问我:"(Java)Spring开发人员应该知道的一件事是什么?" 这个问题使我措手不及. 是的,(核心)S ...

  6. Java开发人员应该知道的5大Spring Boot功能

    您可能已经听说过Spring Boot,这是用不到140个字符创建一个Spring Web应用程序的神奇力量,可以在一条推文中编写这些字符,但这到底意味着什么? 哪些功能可以使Spring Boot具 ...

  7. Spring开发人员知道的一件事

    在最近关于(核心)Spring Framework的培训课程中,有人问我:"(Java)Spring开发人员是否应该知道一件事,那应该是什么?" 这个问题使我措手不及. 是的,(核 ...

  8. 从零学javascript_我刚刚问了23,000个开发人员他们对JavaScript的看法。 这是我学到的。...

    从零学javascript by Sacha Greif 由Sacha Greif 我刚刚问了23,000个开发人员他们对JavaScript的看法. 这是我学到的. (I just asked 23 ...

  9. Spring Boot 针对 Java 开发人员的安装指南

    Spring Boot 可以使用经典的开发工具或者使用安装的命令行工具.不管使用何种方式,你都需要确定你的 Java 版本为 Java SDK v1.8 或者更高的版本.在你开始安装之前,你需要确定你 ...

最新文章

  1. 移植uboot第七步:支持DM9000
  2. spring boot分环境导出自定义xml配置
  3. 7.2.2 - 并发多线程 开启进程的两种方式
  4. 算法之组合数学及其算法篇(一) ----- 排列与组合
  5. 经验之谈:内存问题造成数据库性能异常怎么破?
  6. 服务器修改动态磁盘,服务器动态磁盘
  7. html5 图片缩放 鼠标滚轮,鼠标滚轮实现图片的放大缩小
  8. Python制作统计图形
  9. 10-Transformation
  10. 电脑文件自动备份云服务器,电脑文件自动备份云服务器
  11. 多机器人路径规划CBS/ECBS等 libmultiRobotPlanning 代码阅读笔记
  12. CXF报错及解决方案
  13. python查找公共前缀_Python练习【3】【罗马数字转换/查找公共前缀】
  14. android播放mp3方法,Android MediaPlayer 播放音频的方式
  15. mStar 6A648 双 WiFi
  16. 高校BBS上令人思绪万千的100条
  17. Unity学习笔记:Unity 3D 飞机大战
  18. java jvm限制cpu_Docker——JVM 感知容器的 CPU 和 Memory 资源限制
  19. 验证“哥德巴赫猜想”,数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内
  20. verilog学习 | HDLBits:在线学习答案

热门文章

  1. 详细整理分层开发步骤!
  2. 复制一个5G文件只需要两秒,全网最牛方法!
  3. Rest风格---ElasticSearch
  4. android解决工具类中没有context中的问题
  5. 下载bilibli网站视频
  6. mysql 时间 1_(转)mysql日期时间函数1
  7. git 合并冲突_git分支管理的策略和冲突问题
  8. MySQL存储过程+游标+触发器
  9. HDU2612(BFS算法)
  10. java 迁移数据_Java 10迁移建议