目前 Java 后端有哪些不是很有必要去学的?

本文分析了Java开发中JSP、Struts和Hibernate等技术的现状,指出它们在现代开发中的地位。JSP由于前后端分离的趋势已逐渐被淘汰,建议学习者直接掌握更现代的视图技术。Struts作为曾经的MVC框架已被SpringMVC取代,新手应从SpringMVC开始学习。Hibernate虽然功能强大,但复杂的ORM导致学习成本高和调优困难,MyBatis作为轻量级替代品更受欢迎。然而,Servlet作为JavaWeb的基础,仍然需要深入学习。对于其他如Applet、Swing和XML等技术,其重要性在现代开发中相对下降,学习优先级可适当降低。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天要谈一下那些Java知识“已经过时”,没必要继续学习了。

  1. 判断的依据主要有以下几点:
  2. 实际开发能否用到?
  3. 是否有助于加深对技术的理解?
  4. 对面试是否有用?

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的技术是你必须要掌握的还是已经“过时的技术”,最重要的还是你的java基础知识,只有java基础知识打牢固,你才能越怕越高,不然你就会半路重重的摔下。

要想基础牢,java基础不能忘,Java体系精讲 帮你扎实你的基础知识!

### Java后端开发学习路线图 #### 基础阶段 对于初者来说,打牢Java基础至关重要。这一阶段的目标是熟悉编程语言的核心概念以及面向对象的思想。通过学习变量、数据类型、控制结构、数组、字符串操作等内容来构建扎实的基础[^1]。 推荐资源方面可以考虑一些高质量的教视频或者书籍。例如,在网络平台上存在许多优质的开源教资料,像B站上的韩顺平老师的《0基础30天Java》系列教程因其详尽的内容和实践性的练习而备受推崇[^2][^3]。 #### 高级阶段 进入高级阶段之后,开发者需要深入理解多线程处理、集合框架、IO流等更复杂的主题。这些知识点不仅提升了编码能力,还为后续接触企业级应用奠定了理论依据。 此外,掌握设计模式也是此阶段的重要任务之一。常见的单例模式(Singleton Pattern),工厂方法模式(Factory Method Pattern)等能够帮助解决实际工作中遇到的各种架构难题。 #### 数据库交互与ORM框架 作为后端工程师,熟练运用SQL语句查询数据库是一项必备技能。同时还需要学习如何利用Hibernate或MyBatis这样的持久层框架简化JDBC的操作流程,提高工作效率并减少错误发生几率。 以下是简单的Spring Data JPA示例代码片段展示如何定义实体类并与之关联的Repository接口: ```java @Entity public class User { @Id private Long id; private String name; // getters and setters... } public interface UserRepository extends JpaRepository<User, Long> {} ``` #### Web开发框架 目前最流行的Java web框架当属Spring Boot。它提供了快速搭建微服务项目的便利条件,并且内置了许多实用的功能模块,比如自动配置、嵌入式服务器支持等等。下面是一个典型的Spring Controller实现: ```java @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public ResponseEntity<User> getUserById(@PathVariable Long id){ Optional<User> userOptional = userService.findById(id); return userOptional.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build()); } } ``` #### 微服务体系与其他工具链 随着互联网业务规模不断扩大,分布式系统的建设变得越来越重要。因此有必要研究Dubbo,Zookeeper,Kafka等相关中间件及其工作原理;另外也要关注容器化部署方案Docker/Kubernetes带来的革命性变化。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值