关于ssh的争议

ssh三大框架现在过时没人用了?

今天去面试一家互联网公司,公司在本地还算有点名气。谈到项目经验的时候,介绍了自己在上家公司做的一个项目,项目是基于SOA面向服务架构的分布式大型系统,然后说了sturts2、springMVC、EJB、SOAP等技术。介绍完顿时就被面试官给鄙视了,说这些技术都这么落后了,早几年就没人在用了,你们公司还在用这些东西来开发啊,当时就不知道怎么把话给接下去了。
求问知乎的各位JAVA大神,这些技术真的有这么落后了么?
 

 
曾经用过ssh,当时都在用,从来没有深入想过,选型的问题。
最近正好又在回顾,再比照经历过场景,和同事聊的时候,也沟通过这个问题。

很浅薄,2年没搞JEE了

不太清楚公司的类型,业务内容,和答主面试的岗位。

企业级开发,重的是开发效率和成本,喜欢用旧的稳定的东西,人员也好招。

而互联网公司,多少有些爱折腾的极客精神,比较喜欢开源,常把性能,优化,瓶颈挂在嘴边,技术氛围较浓,想搞个东西,证明自已牛逼,这样也更吸引技术人员。

所以互联网公司,喜欢用新的,开源的东西,高性能的东西,哪怕这东西还不稳定,反正开源,对自家水平很自信,也有那资源去投入,自已人看源码去改,实力足的,会根据自身的需求,自已搞一套。

一线的互联网公司都会有自已的框架,并贡献一部分到社区上,JEE相关的,我知道的有阿里的Dubbo,Druid。

言归正传

Spring+Struts+Hibernate是越来越少了

Spring+SpringMVC+Mybatis的更多

Spring,怎么都得用的,IOC,AOP,事务管理都太宝贝了。

struts太重太繁琐,SpringMVC各方面,完胜,没接触过struts2,不评。

Hibernate太重,他想作的事太多了,我个人觉得,像hibernate事务,完全鸡肋,而缓存,大部分时候也用不上,需要用到的场景,完全可以自已开发,更轻,而数据关系变得复杂后,hibernate越难驾驭,分布式事务的时候,我没搞过,不知hibernate好不好处理,还是mybatis更灵活,必要时,直接写SQL。按业务类型,混合着用。

SOA用的也真的少了,他太重了,要么用轻的REST,要么用性能更好的RPC

但这些,也绝不是早几年没人在用,现在用的依然很多很多,大公司的不同项目,更是各种框架都有。

“这些技术都这么落后了,早几年就没人在用了,你们公司还在用这些东西来开发啊”

这话不是一个合格的面试官该说的,直接把气氛搞僵了,或者只是装逼或压价吧。

我不知道后续你们怎么谈的。

他应该从你提的那些点,稍深入问下去,看看你对所用技术了解的深度。

别的不说,Spring的水就很深,就算公司现在真的不用,也能从这问出一个人的功底。

他既然瞧不起这些落后的技术,也可以问问你,这些技术,原理是什么,缺陷在哪里,为什么被抛弃了不是么?

冒昧问一句,题主,能不能告诉我他们公司在用什么……

我好再充充电。
我敢说 Struts 是简历中被拼错最多的词……
 
 
从两个方面来说:
1、题主提到的几个技术,struts2\ejb\soap,确实是企业级应用常见的技术,在互联网企业中用的不多。从这个角度说,题主去面试互联网公司,应该事先准备下,对方公司在做些什么,用到了哪些技术,自己是否需要短时间之内恶补下相应的技术。既是对对方公司的尊重,也是对自己的尊重,毕竟大家都很忙,时间都很宝贵。
2、从题主的描述来看,面试官也有问题,注意前提,是假定题主描述的面试官在题主介绍技术之后直接鄙视题主,而不是考察题主到底掌握到什么程度。比如互联网公司可能不会用struts2\ejb\soap,但spring总要用吧,spring本身就是一个巨大的技术范畴,对技术的理解、思想、理念,都可以考察,要深度有深度,要广度有广度。
总之,题主没必要对此纠结,提高自己的姿势水平才是重要的,面试之后,自己如果能更正确的认识自己,提高自己的短板,应该是件好事。
祝题主好运~
利益相关:互联网从业人员,上百次面试官经验。
 
spring今年已经12岁了,我有足够的理由相信,下一个十(五?)年,他还是主流。
除非JAVA的份额下降,或是JAVA从语言层面做出较大提升。

另外,装逼的面试官,你见多了就习惯了
 


如你的题目所述,你面试的是一家互联网公司,在互联网公司,SSH的确用得不多,而从你的业务经验来看,应该一直是做企业应用开发的,而在这里领域,就目前来说,主流仍然是SSH。

先说面试官的问题,他在面试你之前看你的简历就应该清楚的知道这个差异的存在,既然给了你面试的机会,那他关注的点就应该是你对SSH的掌握程度如何并以此来把握你对技术的理解力。如果他认为你的SSH经验背景对他的岗位需求来说没有帮助,那一开始就不要让你去面试好了。当然,我们可以理解,有些时候这种面试是HR单方面安排的,他可能也没有机会事先过滤掉你的简历,但是即使如此,既然开始了面试,那他说出这样的话语,其实从某种程度上讲,体现了他的无知和粗鲁。

再说你的问题,你既然去面试一家互联网公司,那事先应该清楚的知道他们的技术生态和企业应用开发的圈子是不大一样的,如果你不明白,那说明你没有做好功课,只是盲目的投简历,试图碰运气看能不能找一份所谓的“好”工作而已。如果你事先做好了功课,知道这些背景,即使面试官说出这样的话,你也不至于无话可答对不对?
 
不能简单的说用还是不用
spring你不用,自己码类库去?MVC不用你咋搞?全是servlet+JSP?麻烦哪
hibernate不用,mybatis也是orm统一范畴的东东吧
struts tag不用,你总得用el或者velocity吧?
总之都会或多或少用到
 
 
spring mvc的动态路由和函数级handler,比起struts灵活到不知道哪里去了。用了struts八成也得用jsp,而jsp是公认的毒瘤。以前是没办法,现在有了那么多模板引擎你还好意思用jsp嘛?

mybatis之于hibernate也是如此,更不要提新的ejb jpa,以及即将到来的基于stream api的链式查询器了。
 


要知道,阿里系也是用spring的,阿里自己的mvc框架虽然不是struts等常见mvc框架,但也是自己开发的类似于spring mvc的一个框架webx。
所以,框架不重要,重要的是你能不能驾驭他。
不过,互联网公司好像真没有听过用hibernate的。即使用,也是内用使用的系统,运营类的基本是不会用hibernate的。
 
如果能读完SSH框架源码,就可以很完美的回答这个问题
 

框架本身的思想是精华。没有落不落后。
 
 
目前Java招聘张嘴就要求会用ssh跟张嘴就说这些都是“过时的”技术的公司,一般都好不到哪里去。
 
看了上面的回答,请各位不要盲目的将你感兴趣的技术放在工作中。不管是SSH,还是现在MEAN,你要做的就是无论在哪个环境中都能胜任工作,哪怕是你不熟悉的技术。
说到面试,像你遇到的这种面试官太多了。你要做的如何投其所好的来回答他。有点难为你,不过,做到这一点后,我想面试也就没那么难了吧。

总之,一句话,让自己强大起来、优秀起来。

还有像我这样装逼回答问题的,你就呵呵一下就好!!!
 

ssh三大框架都有应用场合。
 
很多同学的回答都集中考虑了框架本身的问题,却忽略了这个技术出现的时机,和它所欲解决的问题。
但是我认为,看待任何事物,都不能脱离事物当时所处的环境。
简单概括来说,SSH不流行的原因就是:   因为时代发生了变化,小型软件变得流行,所以SSH风头不在。

从上个世纪末开始,各个行当的企业们,包括金融业,银行业,制造业等传统行业,也包括通信业,互联网业等新兴行业,出于各自的需求,开始陆续进行大规模的软件研发。而95年太阳公司推出的JAVA,因为其通用性、高效性、安全性、以及让人难以置信和无法拒绝的平台移植性,毫无争议地成为了企业级应用开发的救星,而98年Sun公司推出的J2EE简直就是救星中的超新星。
可以想象,那个时候的程序员,嘴边如果不随时挂上个OOP,SRP,ISP之类的,自己都不好意思跟人打招呼。
这波浪潮一直在发展,直到2003年Spring的出现,以无比巧妙的理念,被所有程序员心悦诚服地加冕了企业级应用开发的皇冠,并与J2EE中另外两个知名框架Struts和Hibernate,合称为SSH。但毫无疑问,Spring是其中最闪耀的,它粉丝无数,赞誉满身。
所以你明白了?SSH本身是J2EE中的明珠,J2EE是什么,是Java 2 Enterprise Edition,SSH一家三口都是为企业级应用开发而生的。
企业级的应用,听起来就很大只对吧,实际上,J2EE面对的场景就是很大。

然而,市场是不断变化的,这数十年来,互联网本身在不断发展,互联网最强大之处在于,就是能够促进信息本身的分化,信息越分化,市场就越分化,市场越分化,社会就越多元化。
所以,后来,我们看到WEB2.0的时代迅速到来,站长开始流行,各种各样的站点出现了。
然后很快,移动互联网开始席卷世界,app开发者替代了站长。
在软件开发环境上,令人吃惊的一幕出现了。
以前,大多数程序员都窝在大企业的格子间,面对着文档,图纸和万恶的项目计划书为企业开发各式应用,现在,他们一个人就可以在家开发出全世界人都可以访问的应用了。

场景开始变小了。
而程序员的数量,在过去的30年间,翻了不知道多少倍。

因此,时代的发展,也是互联网的发展,直接导致了,在软件开发环境中,小型应用变的流行。这是市场发展的结果,也是技术发展的结果。
而小型应用的流行,将导致更小,更轻,更灵活的技术不断涌现,所以应用开发的趋势是更轻,更快,更灵活。
所以,在目前的软件开发体系中,SSH变得不那么流行了,因为他是旧时代的产物。
当然,SSH还会一直存在,因为现在还有很多它适用的场景,它被替代的过程或许很漫长,但是在目前的市场环境下,相对于众多新技术而言,它还是显得过于庞大和古老了。

补充扯淡对JAVA的看法:  
JAVA本身就是一本较为古老,且极为成熟的语言,想在语言特性上做较大的变动,风险很大,收益却可能并不乐观,何况,它的缔造者,太阳公司,已经不在了。  
JAVA太稳定,以至于这些年的发展速度有点滞后,并因此远离开源社区。
去Github上看一下,star top 100的项目,JAVA相关的寥寥无几。  
类似于Go,Python,JS,包括基于JVM的Scala都在这些年中,分别在多个开发领域获得了极大的发展,包括Swift这种新贵,也在做更多的努力。  
但是JAVA作为语言本身,突破太少,主要还是固守以前的壁垒,当然,Spring依旧粉丝众多。当然,JAVA在Tiobe上的数据还是很美的,世界第一宝座,无人能够动摇。  

以上都说明JAVA已经变成和C,C++一样的,非常稳定和非常基础的语言了。  
流行的,往往是相对新颖、相对有趣,别人有所耳闻又不完全了解的。 谈论一个比较古老又比较基础的语言,肯定是没有太多逼格加成的啊。

你说,『我在Gopher大会上就分布式应用开发跟人谈笑风生』,或者『我上周刚刚给ECMA提交过第7版的修改意见』,或者『我昨天晚上刚刚为React Native提交了32个pull request,他们刚刚给我发来感谢邮件,邀请我join他们的committee』,你看,下面的听众肯定是一群星星眼:『卧槽,大神,你那pull request里面,Author能带上我么』  
JAVA这边呢,你也说,『我开发了Eclipse中的xxx插件』,『我曾经翻译过Kent Beck的著作』,『我参加过世界级的OO研究大会』。。。厉害不厉害,当然厉害!下面观众也星星眼,『卧槽,好牛逼啊』,但是程序员心里都知道,那些经历,都是上个时代的了,早就落伍啦,老伯,你手里没有点新鲜的吗?

所以说程序员呀还是要提高自己的姿势水平,识得唔识得啊?
 
 
不是java大神,但是跟java打交道挺多。
个人觉得这面试官真不专业,估计自己水平也就一般般,SSH 这些东西本来就是方便开发的工具,用着顺手就行,居然这也能找到鄙视点,可以无视他,这样的公司不去也罢。
这些技术一点都不落后,我接触的java开发项目大都是用这些技术,题主可以忽略他的鄙视,重新找一家
 
 
去年曾在BAT中某公司实习,就我所见。Spring几乎已经融入该公司的整条Java技术线中。而Java在该公司的后端业务中至少占了8成。尤其是在核心的支付,交易业务,几乎都是用Java完成的。
总之,
没有万能的技术,只有合适的技术。
没有不变的技术,只有先进的理念。
 
闭关学了SSH,刚出来你就给我说这个 !
 
Spring还是很多的吧,另外两个这年头就是抱 spring大腿刷刷存在感
 
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值