1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00
Java-Interview-Guide/docs/about-the-author/deprecated-java-technologies.md

102 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 已经淘汰的 Java 技术,不要再学了!
category: 走近作者
tag:
- 杂谈
---
前几天我在知乎上随手回答了一个问题“Java 学到 JSP 就学不下去了,怎么办?”。
出于不想让别人走弯路的心态,我回答说:已经淘汰的技术就不要学了,并顺带列举了一些在 Java 开发领域中已经被淘汰的技术。
## 已经淘汰的 Java 技术
我的回答原内容如下,列举了一些在 Java 开发领域中已经被淘汰的技术:
**JSP**
- **原因**JSP 已经过时,无法满足现代 Web 开发需求;前后端分离成为主流。
- **替代方案**:模板引擎(如 Thymeleaf、Freemarker在传统全栈开发中更流行而在前后端分离架构中React、Vue、Angular 等现代前端框架已取代 JSP 的角色。
- **注意**:一些国企和央企的老项目可能仍然在使用 JSP但这种情况越来越少见。
**Struts尤其是 1.x**
- **原因**:配置繁琐、开发效率低,且存在严重的安全漏洞(如世界著名的 Apache Struts 2 漏洞)。此外,社区维护不足,生态逐渐萎缩。
- **替代方案**Spring MVC 和 Spring WebFlux 提供了更简洁的开发体验、更强大的功能以及完善的社区支持,完全取代了 Struts。
**EJB (Enterprise JavaBeans)**
- **原因**EJB 过于复杂,开发成本高,学习曲线陡峭,在实际项目中逐步被更轻量化的框架取代。
- **替代方案**Spring/Spring Boot 提供了更加简洁且功能强大的企业级开发解决方案,几乎已经成为 Java 企业开发的事实标准。此外,国产的 Solon 和云原生友好的 Quarkus 等框架也非常不错。
**Java Applets**
- **原因**:现代浏览器(如 Chrome、Firefox、Edge早已全面移除对 Java Applets 的支持,同时 Applets 存在严重的安全性问题。
- **替代方案**HTML5、WebAssembly 以及现代 JavaScript 框架(如 React、Vue可以实现更加安全、高效的交互体验无需插件支持。
**SOAP / JAX-WS**
- **原因**SOAP 和 JAX-WS 过于复杂数据格式冗长XML对开发效率和性能不友好。
- **替代方案**RESTful API 和 RPC 更轻量、高效,是现代微服务架构的首选。
**RMIRemote Method Invocation**
- **原因**RMI 是一种早期的 Java 远程调用技术,但兼容性差、配置繁琐,且性能较差。
- **替代方案**RESTful API 和 PRC 提供了更简单、高效的远程调用解决方案,完全取代了 RMI。
**Swing / JavaFX**
- **原因**桌面应用在开发领域的份额大幅减少Web 和移动端成为主流。Swing 和 JavaFX 的生态不如现代跨平台框架丰富。
- **替代方案**:跨平台桌面开发框架(如 Flutter Desktop、Electron更具现代化体验。
- **注意**:一些国企和央企的老项目可能仍然在使用 Swing / JavaFX但这种情况越来越少见。
**Ant**
- **原因**Ant 是一种基于 XML 配置的构建工具,缺乏易用性,配置繁琐。
- **替代方案**Maven 和 Gradle 提供了更高效的项目依赖管理和构建功能,成为现代构建工具的首选。
## 杠精言论
没想到,评论区果然出现了一类很常见的杠精:
> “学的不是技术,是思想。那爬也是人类不需要的技术吗?为啥你一生下来得先学会爬?如果基础思想都不会就去学各种框架,到最后只能是只会 CV 的废物!”
<img src="https://oss.javaguide.cn/github/javaguide/about-the-author/prattle/deprecated-java-technologies-zhihu-comments.png" style="zoom:50%;" />
这句话表面上看似有道理,但实际上却暴露了一个人的**无知和偏执**。
**知识越贫乏的人,相信的东西就越绝对**,因为他们从未认真了解过与自己观点相对立的角度,也缺乏对技术发展的全局认识。
举个例子,我刚开始学习 Java 后端开发的时候,完全没什么经验,就随便买了一本书开始看。当时看的是**《Java Web 整合开发王者归来》**这本书(梦开始的地方)。
在我上大学那会儿,这本书的很多内容其实已经过时了,比如它花了大量篇幅介绍 JSP、Struts、Hibernate、EJB 和 SVN 等技术。不过,直到现在,我依然非常感谢这本书,带我走进了 Java 后端开发的大门。
![](https://oss.javaguide.cn/github/javaguide/about-the-author/prattle/java-web-integration-development-king-returns.png)
这本书一共 **1010** 页,我当时可以说是废寝忘食地学,花了很长时间才把整本书完全“啃”下来。
回头来看,我如果能有意识地避免学习这些已经淘汰的技术,真的可以节省大量时间去学习更加主流和实用的内容。
那么,这些被淘汰的技术有用吗?说句实话,**屁用没有,纯粹浪费时间**。
**既然都要花时间学习,为什么不去学那些更主流、更有实际价值的技术呢?**
现在本身就很卷,不管是 Java 方向还是其他技术方向,要学习的技术都很多。
想要理解所谓的“底层思想”,与其浪费时间在 JSP 这种已经不具备实际应用价值的技术上,不如深入学习一下 Servlet研究 Spring 的 AOP 和 IoC 原理,从源码角度理解 Spring MVC 的工作机制。
这些内容,不仅能帮助你掌握核心的思想,还能在实际开发中真正派上用场,这难道不比花大量时间在 JSP 上更有意义吗?
## 还有公司在用的技术就要学吗?
我把这篇文章的相关言论发表在我的[公众号](https://mp.weixin.qq.com/s/lf2dXHcrUSU1pn28Ercj0w)之后,又收到另外一类在我看来非常傻叉的言论:
- “虽然 JSP 很老了,但还是得学学,会用就行,因为我们很多老项目还在用。”
- “很多央企和国企的老项目还在用,肯定得学学啊!”
这种观点完全是钻牛角尖!如果按这种逻辑,那你还需要去学 Struts2、SVN、JavaFX 等过时技术,因为它们也还有公司在用。我有一位大学同学毕业后去了武汉的一家国企,写了一年 JavaFX 就受不了跑了。他在之前从来没有接触过 JavaFX招聘时也没被问过相关问题。
一定不要假设自己要面对的是过时技术栈的项目。你要找工作肯定要用主流技术栈去找,还要尽量找能让自己技术有成长,干着也舒服点。真要是找不到合适的工作,去维护老项目,那都是后话,现学现卖就行了。
**对于初学者来说别人劝了还非要学习淘汰的技术,多少脑子有点不够用,基本可以告别这一行了!**