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

spring javaee

在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.没有上下文的arguments脚论点

每当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 javaee

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言:谈谈指针!

点击蓝字关注我们指针对于C来说太重要。然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识。所以本文尽可能的通过一篇文章完全讲解指针。为什么需要指针?指针解决了一些编程…

C/C++ 中的 #pragma once 作用是什么?

点击蓝字关注我们1、#pragma once有什么作用?为了避免同一个头文件被包含(include)多次,C/C中有两种宏实现方式:一种是#ifndef方式;另一种是#pragma once方式。在能够支持这两种方式的编译器上,…

rowmapper_Spring Integration Jdbc RowMapper示例

rowmapperJDBC入站通道适配器的基本功能是执行SQL查询,提取数据并将以Message形式封装的结果集传递到本地通道。 您可以在JDBC入站通道适配器的示例中阅读有关此内容的更多信息。 有效负载的类型由行映射策略决定。 默认结果是产生类型为List的有效负载&#xff0c…

python做大数据的框架_Python+大数据计算平台,PyODPS架构手把手教你搭建

原文链接:http://click.aliyun.com/m/13965/ 在2016年10月的云栖社区在线培训上,来自阿里云大数据事业部的秦续业分享了《双剑合壁——Python和大数据计算平台的结合实战》。他主要介绍了数据分析和机器学习的方法、DataFrame整体架构以及基础API、前端、…

武魂觉醒s系列服务器,[多线]星河斗罗——新服开荒丨高程度剧情还原丨3D坐骑丨魂环丨武魂觉醒[1.12.2]...

[服务器介绍]星河斗罗 全新原创开荒斗罗大陆服务器前言:超高还原小说真实性,独特的武魂贴图,魂兽建模,坐骑建模,开放性冒险地图,让您更加体验斗罗大陆的真实性。进服送新手大礼包:装备&#xff…

C++ 的万能头文件,你知道多少?

点击蓝字关注我们C 中万能头文件 bits/stdc.h 的介绍很多小伙伴估计看有的代码会碰见没有多余的其它头文件比如 algorithm、cmath、iostream 而是用了一行 #include<bits/stdc.h> 这样的头文件并感到诧异&#xff0c;想这是什么。其实这是一个包含了 C 所有头文件的一个头…

pytorch dataset读取数据流程_高效 PyTorch :如何消除训练瓶颈

加入极市专业CV交流群&#xff0c;与 10000来自港科大、北大、清华、中科院、CMU、腾讯、百度 等名校名企视觉开发者互动交流&#xff01;同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总&#xff0c;行业技术交流。关注 极市平台 公众号 &#xff0c;回复 加群&…

APP 文档服务器,app服务器

app服务器 内容精选换一换华为云帮助中心&#xff0c;为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档&#xff0c;帮助您快速上手使用华为云服务。调用接口出错后&#xff0c;将不会返回结果数据。调用方可根据每个接口对…

webresource_Jersey WebResource –标头不附加

webresource昨天&#xff0c;在使用Jersey WebResource类进行HTTP调用时遇到了一个奇怪的问题&#xff1a;似乎我设置的标头在执行HTTP调用时被忽略了。 提前阅读。 我试图实现的目标是调用REST Api从我们的应用程序中获取一些数据。 为此&#xff0c;我使用了Jersey客户端 &a…

需求最高的8种编程语言

点击蓝字关注我们在过去的 8 个月时间里&#xff08;从 2021 年 10 月到 2022 年 6 月&#xff09;&#xff0c;DevJobsScanner 分析了超过 700 万份开发者工作需求&#xff0c;得出了目前行业需求量最高的 8 种编程语言。需要注意的是&#xff0c;在这 700 万份工作需求中&…

java面包屑实现_在Java中实现过滤器和面包店锁

java面包屑实现为了了解锁的工作原理&#xff0c;实现自定义锁是一种好方法。 这篇文章将展示如何在Java上实现Filter和Bakery锁&#xff08;自旋锁&#xff09;&#xff0c;并将它们的性能与Java的ReentrantLock进行比较。 过滤器锁和面包房锁满足互斥并且也是无饥饿算法&…

postman 怎么调试pos_SpringBoot|第十五章:基于Postman的RESTful接口测试

前言从上一章节开始&#xff0c;接下来的几个章节会讲解一些开发过程中配套工具的使用。俗话说的好&#xff0c;工欲善其事&#xff0c;必先利其器。对于开发人员而言&#xff0c;有个好用的工具&#xff0c;也是一件事半功倍的事&#xff0c;而且开发起来也很爽&#xff0c;效…

spring配置jndi_在Spring Framework中通过JNDI进行配置

spring配置jndi从某个时候开始&#xff0c;应用程序必须是可配置的。 从第一个版本0.9开始&#xff0c;Spring Framework就为该问题提供了一个很好的辅助工具&#xff0c;该类为PropertyPlaceholderConfigurer类&#xff0c;而从Spring Framework 3.1开始&#xff0c;为Propert…

这几个C语言关键字你真的得懂(深度解剖)

点击蓝字关注我们1、什么是语句&#xff0c;表达式&#xff1f; 在C语言中 &#xff0c;凡是以分号隔开的就是一条语句&#xff1a;printf("hello world\n");a 1 2; ; (空语句)什么是表达式呢&#xff1f;C语言中&#xff0c;用各种操作符把变量连起来&#xff0c;…

aws sqs_JMS和AWS SQS的更多高级内容

aws sqs如您所知&#xff0c; AWS中的SQS SQS代表“简单队列服务”。 最近&#xff0c;在使用它的同时&#xff0c;我发现了将其称为“简单”的原因之一。 在之前的两篇文章&#xff08; 此处和此处 &#xff09;中&#xff0c;我展示了结合Spring Framework将SQS用作JMS队列提…

python 直方图每个bin中的值_【Python数据分析】四级成绩分布 -matplotlib,xlrd 应用...

标签&#xff1a; 最近获得了一些四级成绩数据&#xff0c;大概500多个&#xff0c;于是突发奇想是否能够看看这些成绩数据是否满足所谓的正态分布呢&#xff1f;说干就干&#xff0c;于是有了这篇文章。 文章顺带介绍了xlrd模块的一些用法和matplotlib画自定义数据的条形图和随…

adf开发_了解ADF生命周期中的ADF绑定

adf开发在这篇文章中&#xff0c;我将重点介绍ADF绑定层&#xff0c;并探讨当最初从浏览器请求带有一些数据的ADF页面时它如何工作。 Oracle ADF提供了自己的JSF生命周期扩展版。 实际上&#xff0c;ADF扩展了标准的JSF生命周期实现类&#xff0c;并提供了ADF阶段侦听器&#…

C语言实现计算器

点击蓝字关注我们1、实现逻辑首先创建菜单(menu)&#xff0c;把我们需要实现的功能打印到运行栏屏幕上。实现加法计算实现减法计算实现除法计算实现乘法计算退出计算器当然以上都是属于最基本的计算&#xff0c;你当然还可以实现一些其它计算。例如&#xff1a;位运算(按位与、…

python怎么创建txt文件啊_python根据txt文本批量创建文件夹

前言 前言&#xff1a;想写这个代码的原因是因为实习的时候需要根据表格名创建对应的文件夹&#xff0c;如果只是很少个数文件夹的话&#xff0c;ctrlshiftn还可以接受吧&#xff0c;可是一次就要创建几百个文件夹&#xff0c;这就有点方方了。所以我写了一些代码解决实际的问题…

jpa的查询api_为JPA的本机查询API键入安全查询

jpa的查询api当您使用JPA时-有时-JPQL不能解决问题&#xff0c;您将不得不使用本机SQL。 从一开始&#xff0c;像Hibernate这样的ORM就为这些情况保留了开放的“后门”&#xff0c;并为Spring的JdbcTemplate &#xff0c; Apache DbUtils或jOOQ提供了类似的API&#xff0c;用于…