大家好,我是苏三,又跟大家见面了。前言最近星球中有些球友的简历发给我,让我帮他修改(星球成员有1V1免费修改简历的服务),我打开简历之后被震惊了。
有一位小伙伴的简历里还写着“精通Struts、Hibernate、JPS” ,这些陈旧的技术栈。
而最新最主流的技术栈,一个都没写。
难怪不好找工作。
这篇文章跟大家一起聊聊当年很流行,现在已经被淘汰的Java技术,以及2025年该学什么才能保持竞争力,希望对你会有所帮助。
如果你也有修改简历的需求,欢迎加入星球。还能获取100万QPS短链系统、商城微服务、苏三AI项目、秒杀系统、商城系统、秒杀系统、代码生成工具等 7 个项目的 源代码、开发教程和技术答疑
一、Web开发领域的“化石级”技术1. Struts:配置地狱的鼻祖十年前,Struts几乎是Java Web开发的代名词。
但如今,**新项目采用率不足0.3%**(2024年统计数据)。
它的致命缺陷在于XML配置地狱:
代码语言:javascript复制
type="com.example.LoginAction" name="loginForm">
这段配置定义了一个登录功能,需要编写FormBean、Action类、JSP页面三件套。
而同样功能在Spring Boot中:
代码语言:javascript复制@RestController
public class LoginController {
@PostMapping("/login")
public ResponseEntity> login(@RequestBody LoginRequest request) {
// 业务逻辑直接在此处理
return ResponseEntity.ok().build();
}
}
淘汰原因:
配置复杂度指数级增长:大型项目中struts-config.xml可达数千行安全性漏洞频发:Struts2的OGNL注入漏洞曾引发大规模安全事件测试困难:Action与Servlet API强耦合,难以单元测试替代方案:Spring MVC + Spring Boot的约定优于配置模式,开发效率提升300%
2. JSP:前后端耦合的“历史遗产”JSP技术允许在HTML中嵌入Java代码:
代码语言:javascript复制<%@ page contentType="text/html;charset=UTF-8" %>
<% for(int i=0; i<5; i++) { %>
Hello <%= request.getParameter("name") %>
<% } %>
这种混合模式导致:
前端依赖后端编译:修改页面需重启服务职责边界模糊:后端工程师被迫处理CSS/JS问题性能瓶颈:首次请求需编译成Servlet类现代方案:前后端分离架构(Vue/React + Spring RESTful API),通过JSON交互:
代码语言:javascript复制// Spring Boot控制器
@GetMapping("/users")
public List
return userService.findAll(); // 返回JSON
}
代码语言:javascript复制// Vue组件
axios.get('/users').then(response => {
this.users = response.data // 数据绑定到前端
})
核心转变:后端专注数据服务(MC模式),前端专注展示交互(View层)
二、重量级框架的陨落3. Hibernate:过度封装的代价Hibernate曾以全自动ORM著称,试图完全隔离数据库:
代码语言:javascript复制// Hibernate查询示例
List
.setParameter("dept", "IT")
.list();
看似简洁却暗藏危机:
性能黑洞:N+1查询问题(获取User连带查询所有关联对象)调优困难:Criteria API生成的SQL难以优化学习曲线陡峭:Session管理、延迟加载、缓存机制复杂度高现代替代:MyBatis的SQL透明化方案:
代码语言:javascript复制
SELECT * FROM users WHERE department = #{dept}
LIMIT 100
架构启示:技术封装不是越彻底越好,适当的“泄露抽象”反而提升系统可控性
4. EJB:分布式架构的“恐龙”EJB(Enterprise JavaBeans)曾是企业级应用的黄金标准:
代码语言:javascript复制@Stateless
public class OrderServiceBean implements OrderService {
@Resource
private SessionContext context;
@TransactionAttribute(REQUIRED)
public void placeOrder(Order order) {
// 分布式事务管理
}
}
但其致命缺陷导致淘汰:
容器强依赖:必须部署在EJB容器(如WebLogic)部署复杂度高:需配置ejb-jar.xml、weblogic-ejb-jar.xml等测试困难:无法脱离容器运行单元测试现代方案:Spring Cloud + Dubbo的轻量级分布式架构:
代码语言:javascript复制@DubboService
public class OrderServiceImpl implements OrderService {
@Transactional // 声明式事务
public void placeOrder(Order order) {
// 业务逻辑
}
}
关键进化:从重量级容器到轻量级容器,从分布式单体到微服务
三、客户端技术的消亡5. Applet:浏览器插件的末路Applet曾梦想“一次编写,到处运行”:
代码语言:javascript复制
消亡的深层原因:
安全沙盒限制:无法访问本地文件系统启动速度慢:需下载整个JRE环境移动端不兼容:iOS/Android均不支持替代方案:WebAssembly + Canvas实现浏览器端高性能应用
6. Swing:桌面开发的“活化石”Swing的GUI开发模式:
代码语言:javascript复制JFrame frame = new JFrame();
JButton btn = new JButton("Click Me");
btn.addActionListener(e -> {
JOptionPane.showMessageDialog(frame, "Hello Swing");
});
frame.add(btn);
frame.setSize(300, 200);
frame.setVisible(true);
淘汰原因:
界面风格陈旧:与现代化UI设计脱节跨平台体验差:在不同OS上显示效果不一致硬件加速不足:动画性能远逊于DirectX/Metal现代方案:JavaFX(仍存续)或跨平台方案如Electron、Flutter
四、基础设施的更迭7. Memcached:缓存领域的“前浪”Memcached曾是缓存首选,但Redis凭借三大优势碾压:
数据结构单一 vs 五大数据类型支持代码语言:javascript复制# Redis支持丰富结构
> HSET user:1000 name "John" age 30
> ZADD leaderboard 100 "Player1"
无持久化 vs RDB/AOF持久化最大1MB值 vs 最大512MB值性能对比:
指标
Memcached
Redis
QPS
200k
300k+
持久化
❌
✅
数据结构
String
5种
集群模式
弱
强
建议:新项目首选Redis,老系统迁移至Redis集群
五、特别提示:这些底层技术不能放弃Servlet:Web技术的基石虽然纯Servlet开发已淘汰,但必须深入掌握其原理:
代码语言:javascript复制public class AuthFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpReq = (HttpServletRequest) req;
if (!checkToken(httpReq.getHeader("Token"))) {
((HttpServletResponse)res).sendError(401);
return;
}
chain.doFilter(req, res); // 继续过滤器链
}
}
学习价值:
理解MVC框架本质:Spring MVC基于DispatcherServlet掌握请求生命周期:Filter → Servlet → Interceptor → Controller性能优化基础:线程模型(单例vs原型)技术淘汰的深层逻辑为什么这些技术会死亡?复杂度失控
Struts配置膨胀、EJB部署繁琐,违背KISS原则(Keep It Simple, Stupid)开发模式进化
单体应用 → 微服务,混合开发 → 前后端分离生态替代效应
Spring生态吞噬EJB,MyBatis取代Hibernate,Vue/React淘汰JSP社区资源枯竭
Struts最新版本停留在2016年,而Spring Boot每月更新2025年该学什么?根据百万级Java开发者调研:
重点方向:
云原生Java:Quarkus/Micronaut等低内存框架响应式编程:Project Reactor实现非阻塞IOGraalVM原生镜像:提升启动速度50倍,降低内存占用90%Vector API:利用SIMD指令优化计算密集型任务总结技术淘汰不是终点,而是认知升级的起点。我建议所有Java开发者:
基础优先原则
死磕Servlet原理、JVM机制、并发编程(这些永不过时)生态适配策略
关注Spring生态演进(Spring Boot 3.x支持Java 17+)性能敏感思维
苹果用Swift重写服务后内存减少90% 的案例警示:资源效率即竞争力定期技术审计
每季度用工具扫描技术栈:代码语言:javascript复制mvn versions:display-dependency-updates
mvn versions:display-plugin-updates
技术人的终极竞争力:不是记住多少API,而是快速判断“什么该放弃”的能力
那些曾让我们“升职加薪”的旧技术,终将成为职业发展的绊脚石。
你还在用哪些“技术化石”?欢迎在评论区分享你的经历!