java后端有哪些不用学的技术?劝退。。。

Java思维导图 Java思维导图     2022-12-16     605

关键词:

作者:沈世钧

来源:www.zhihu.com/question/305924723/answer/557800752

最近这段时间收到了一些读者的私信,问我某个技术要不要学,还有一些在国外的同学竟然对 Java 图形化很感兴趣,还想找这方面的工作。

比较忙,一直没抽出时间去回答这类问题,刚好看到我关注的一位大佬回答过,这里分享一下,希望对你能有帮助。

下面是正文。

我接触 Java 已近 20 年了,见证了许多 Java 技术变迁,包括:

JavaEE 框架,从百家混战到现在 Spring 基本一统天下。

Web 开发,从标配的 SSH 到现在 SpirngMVC + MyBatis 组合。

IDE,从当年如火如荼的 JBuilder 到 Eclipse,再到更好用的 IDEA。

而本文,我主要谈一下那些 Java 知识“已经过时”,没必要继续学习了。您也可以把本文看做上篇文章的补充。

我判断的依据主要有以下几点:

  1. 实际开发能否用到?

  2. 是否有助于加深对技术的理解?

  3. 对面试是否有用?

JSP

JSP 在实际开发中,主要是作为 MVC 模型中的 V(View)层出现的。当然,View 层的渲染技术除了 JSP,还有 FreeMaker、Velocity 等。

JSP 作为页面模板,在后端通过 MVC 框架渲染成 HMTL,然后再发送到客户端(例如浏览器)来呈现。这也就是我们常说的“前后端不分离”,“混合式”开发。

而当前,包括我所在的公司,以及大部分互联网公司。要么已经抛弃这种模式,要么正在抛弃的路上,而转向彻底的“前后端分离”。

在“前后端分离”模式下,后端只负责提供服务接口(例如 REST),而前端(例如 HTML5)通过接口发送/获取,呈现数据(例如 JSON 格式)。

这样,在后端,原来的 MVC 框架,某种意义上已经演变为 MC 框架。因此,与 V(View)相关的一切模板技术都失去了学习的必要,其中当然也包括 JSP。所以,后来的 Java 学习者,我的建议是:

完全可以放弃对 JSP 的学习。”

Struts

在 Java 后端开发中,MVC 模型还是主流。而 Struts 作为一个 MVC 框架,单从技术上来说,还是很优秀的。

但是,现在 Spring 实在是太强势了,越来越成为 Java 开发中的“一站式”工具包,其中的一个利器就是 Spring MVC。

望名知意,Spring MVC 也是一个 MVC 框架。而且因为它是 Spring 的亲儿子,自然和 Spring 契合的非常完美。

同时,在设计之初,Spring MVC 就参照了其他 MVC 框架的优缺点(包括 Struts),所以用起来非常爽。因此,在 MVC 框架领域,Spring MVC 大有一统天下的趋势。

因此现在,很多公司,老的 Struts 项目还在维护。但新的项目开发,更多转向了 Spring MVC。因此,如果你是 Java 新手,正在学习中,我的建议是:

_不要再学习 Struts 了,从 Spring MVC 开始吧!_”

Hibernate

Hibernate 作为老牌的 OR 映射框架,功能非常强大,涵盖面非常广。但这既是它的优点,同时也成为它的“负担”,是开发人员“不能承受之重”。

Hibernate 的设计初衷,是为了最大程度的解放程序员,完全隔离数据库,实现彻底的 OR 映射。程序员甚至可以不写一行 SQL 语句,单通过配置就能实现对数据库的操作。

当然,为了实现这个目标,Hibernate 也设计的非常复杂、非常精巧。就不可避免的带来以下副作用:

  1. 学习成本高

  2. 配置复杂

  3. 调优困难

前两点不难理解,单说“调优困难”。

因为 Hibernate 的设计目标是彻底的 OR 映射,彻底的隔离 SQL 语句。但必然会带来一定的性能损失。大部分情况下,应用如果对性能不敏感,Hibernate 也没问题。但应用一旦对性能敏感,有 SQL 级别调优的需求,Hibernate 的优点反而成为缺点。

虽然 Hibernate 也支持 SQL 级别的调优,但因为框架设计的过于复杂和精巧,这就需要开发人员对 Hibernate 理解的非常透彻,这就带来了更高的学习成本。

而现在最流行的 MyBatis,作为一个“混合式”,轻量级 OR 映射框架,既继承了 Hibernate 的优点,同时也吸取了他的教训。在支持配置的同时,又能接触 SQL,从而带来了更多灵活性(包括调试、优化)。

当前,在实际开发中,Hibernate 使用的越来越少了。大家更偏爱 MyBatis 这种轻量级框架。所以,对后来学习者,我的建议是:

不需要再学习 Hibernate 了,学 MyBatis 就够了。”

Servlet(要精通)

当然,现在不会有任何公司,再用纯粹的 Servlet 来时实现整个 Web 应用,而是转向一些更高级的技术(例如各种 MVC 框架)。因此,会给人一种错觉:Servlet 已经过时,后来者就不需要再学习了。

在这里,我可以非常负责任的说:这种观点是极端错误,极端不负责任的。

Servlet 不仅要学,而且要学深,学透。

当前,Servlet 虽然不再是一个主流 web 开发技术,但依然是 Java Web 开发技术的基础,是 Java Web 容器的基石,是行业标准。而现在流行的各种 MVC 框架(包括 SpringMVC),在最底层,还是以 Servlet 为基础的。

为此,我画了一个简单的图(不准确,会意即可):

图片

所以,如果你想要彻底掌握某个 MVC 框架,则必须彻底理解 Servlet。

而且,Servlet 作为一个基础设施。精通它,不仅有助于理解各种 MVC 框架。即使 Servlet 本身,也有很多实用价值。

如果你深刻理解了 Servlet 的生命周期,就可以在底层做很多事情。譬如在 Request 进来的时候,进行拦截,进行权限的判定。也可以在 Response 发出的时候,进行拦截,统一检查、统一附加。

所以,如果你正在学习 Java,对 Servlet,我的建议是:

Servlet 不仅要学,而且要学深,学透。”

其他

目前在国内,Java 更多是作为 web 后端技术出现的。因此在实际学习中,很多技术就不符合“国情”,学习的现实意义不大。下面我就简单列举下。

1.Applet

作为页面插件技术,不用多说,连 flash 都快被淘汰了,更无论从未流行的 applet。

2.Swing

作为桌面 UI 框架。且不说本身设计的咋样。现实开发中,我接触的桌面应用,要么用 C++(例如 MFC),要么用 C#(Winform、WPF)。所以,Swing 就没有学习的必要了。

3.JDBC

作为较低层的数据库基础设施,JDBC 被很多框架(例如 MyBatis)支持。但在实际开发中,程序员即使不了解也无大碍。因此,虽然我不能建议你放弃 JDBC 学习,但如果你时间有限,完全可以把它的优先级排低一点。

4.XML

XML 现在还在广泛应用。但作为一个 web 数据传输格式,正在逐渐被 JSON 替代。所以,对 Java 后端学习来说,XML 简单了解即可。至于庞杂的 XML 操作 API(例如 XPath),完全不必学习。将来真要用到,再查也不迟。

最后

上面是我的一家之言,肯定有武断之处,见谅!

最后,祝你学习顺利。

java后端有哪些不用学的技术?劝退。。。

作者:沈世钧来源:www.zhihu.com/question/305924723/answer/557800752最近这段时间收到了一些读者的私信,问我某个技术要不要学,还有一些在国外的同学竟然对Java图形化很感兴趣,还想找这方面的工作。比较忙,... 查看详情

Flutter 应用后端都有哪些选项? [关闭]

】Flutter应用后端都有哪些选项?[关闭]【英文标题】:WhatareoptionsforFlutterAppBackend?[closed]Flutter应用后端有哪些选项?[关闭]【发布时间】:2019-12-1604:20:09【问题描述】:Flutter非常棒,但是当您的架构需要将后端与应用程序分开时... 查看详情

客户端发送请求,java后端有耗时任务,web服务器如nginx返回服务端超时信息,会中断后端请求处理吗

...时时间,所以会等到java执行超时后处理结束。参考技术A后端的处理并不会因为nginx超时而结束的nginx的超时是断开了客户端和nginx之间的链接,并不会告知后端的服务,再者nginx也没有那个能力去中断后端正在执行的任务,它就是个... 查看详情

适合女生学的技术有哪些?

适合女生学的技术有哪些?适合女生学的技术有很多,但在这个互联网时代,年轻人需紧跟时代步伐,小朗认为女生学习Web前端开发或UI设计都是很不错的选择。一、Web前端开发如果对编程感兴趣的话可以学习Web... 查看详情

为啥ListItem返回null,因为后端有一个项目

】为啥ListItem返回null,因为后端有一个项目【英文标题】:WhyamReturningnullforListItem,sincethereisaniteminbackend为什么ListItem返回null,因为后端有一个项目【发布时间】:2021-07-0613:44:22【问题描述】:我是Flutter的新手,我正在使用ListView... 查看详情

java开发工程师必须要学的技术都有哪些

参考技术A写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,希望可以给大家一些经验,能让大家更好学习和使用Java。这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE相关的、和Java中... 查看详情

为什么说java是2021年最值得学的技术?

...2021年最值得学的技术!为何这样说呢?Java到底有哪些优势?接下来,小千为答疑解惑。1、Java程序员有着相对较高的薪水薪水是我们工作最原始的动力,所以放在头一位的来 查看详情

开发微信小程序需要哪些技术

...上就没有什么问题了。4、服务器语言,如果不是专业的后端开发者,可能后端有一定的难度其学习曲线较陡。但是,仍然建议开发者学习一下后端语言,至少需要了解大致的原因框架,能够看懂其代码逻辑,这样不仅可以很好... 查看详情

python有哪些是必须学的运算符?

...不了的,本期小千为大家推荐的教程就是关于Python有哪些是必须学的运算符?来看看下面的详细介绍内容。Python有哪些是必须学的运算符?布尔值:值只有两个,即True和False。赋值运算符:用于为变量赋值... 查看详情

前端开发必学的技术都有哪些?

前端开发必学的技术有哪些这里给大家整理了一份系统全面的前端学习路线,主要掌握以下技术:第一阶段:专业核心基础阶段目标:1.熟练掌握HTML5、CSS3、Less、Sass、响应书布局、移动端开发。2.熟练运用HTML+CSS特性完成页面布... 查看详情

面试java高级后端开发,要准备哪些知识点?

其实公司肯花时间让你去面试,前提条件一定是通过你的简历,一定发现了你和公司的匹配点,也就是说,一定是有录用意向的。在技术面试的时间段里(最长1个小时),你如果能展现你的优势那是最好的,但如果你做不到这... 查看详情

深入学习javaweb后端开发必看的书籍都有哪些?

...看作一本Java工程师的入职指南,也可以看作一本串联Java后端技能点的参考手册。通过精心编排的内容,刚入门的Java工程师能够体系化地学习相关开发技能,有经验的Java工程师能够查漏补缺,巩固自己的相关开发技能,进一步... 查看详情

你想学的黑客(攻击)技术全在这了,一篇打包带走!

...套路在于将SQL语句放置于Form表单或请求参数之中提交到后端服务器,后端服务器如果未做输入安全校 查看详情

如果前端调用API的时候显示的是IPv4公网IP,请问这个后端有安全问题吗?

】如果前端调用API的时候显示的是IPv4公网IP,请问这个后端有安全问题吗?【英文标题】:IftheIPv4publicIPisdisplayedwhentheAPIiscalledonthefrontend,arethereanysecurityissueswiththisbackend?【发布时间】:2021-01-1719:30:19【问题描述】:现在,我使用e... 查看详情

初学者怎么学java编程需要了解哪些核心技术

初学者怎么学Java编程?需要了解哪些核心技术?Java是一个纯粹的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心。Java舍弃了C语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以... 查看详情

从0到上线一个完整java项目,需要具备哪些技能?

一朋友想转行到后端开发,随后身边就围绕着各种声音,有支持的,也有劝退的。虽然他也有些纠结,但还是坚持了自己的想法,走上程序员学习之路,同时,他还立了一个大家都认为有些遥远的目标... 查看详情

作为一名后端开发者,你需要学习和掌握的技术栈都有哪些呢?

...,这些技术合起来就可以称为技术栈。那么作为一名后端开发者,你需要学习和掌握的技术栈都有哪些呢?今天 查看详情

java如何查看某个包下都有哪些类或接口?

比如org.springframework.cloud.client.loadbalancer包下有哪些类和接口?参考技术Aeclipse下ctrl+shift+TIDEA:双机shift 参考技术Bjava是编程语言里比较难学的一门,如果有心从事编程方向的工作,最好到专业机构学习并有更多的项目实践,更贴... 查看详情