那些年我们一起追过的 Java 技术,现在真的别再追了! - 程序员晓凡

大家好,我是晓凡。

一、写在前面

前两天,有粉丝朋友小赵,兴冲冲地问我:“凡哥,我想学 JSP,网上教程可便宜了,9 块 9 包邮!”

我当场差点把刚喝下去的冰美式喷到他脸上。

“兄弟,JSP 现在连坟头草都三米高了,你学它干嘛?给历史博物馆交简历吗?”

小赵一脸懵:“可我看招聘网站上,还有公司写‘熟悉 JSP 优先’啊!”

我叹了口气:“那八成是 HR 把十年前的 JD 复制粘贴了,就跟把‘熟练使用传呼机’写进岗位要求一样。”

所以今天,咱们来聊聊那些当年火得一塌糊涂,如今连骨灰盒都找不到的 Java 技术。

友情提示:本文可能会引起部分老程序员的“爷青回”症状,请自备纸巾。

二、 第一位选手:JSP

想当年,JSP(Java Server Pages)可是 Web 开发界的顶流。\n 写个页面,<% %>里嵌 Java 代码,跟现在小学生写作文“有一天,我捡到了一分钱”一样顺手。

为啥当年火?

  • 不用学一堆前端框架,一个 out.println(“

    Hello World

    ”) 就能跑。

  • 配合 Struts1,简直是“双击 666”的黄金搭档。 为啥现在凉了?

  • 代码和 HTML 搅成一锅粥,后期维护堪比“屎山考古”。

  • 现在随便一个 Vue/React,能把 JSP 按在地上摩擦出。 真实案例:\n 我 2015 年接了个老项目,用 JSP+Struts1 做了个 OA 系统。

客户找我改需求,我打开 eclipse,看到几千行的<% if (user.isAdmin()) { %>,差点当场跑路。

三、 第二位选手:Struts1/2

Struts1 有多经典?经典到当年面试必问:“说说 Struts1 的工作流程。”\n 现在再问,面试官可能会以为你在背历史书。

Struts1 的辉煌:

  • 第一个真正意义上的 MVC 框架,让 Servlet 从“野路子”变成“正规军”。

  • 配合 JSP,简直是“黄金搭档”,就像赵本山和宋丹丹。 Struts2 的尴尬:

  • 刚出来时被当成“救世主”,结果因为漏洞太多,被黑客当成“提款机”。

  • 配置 XML 复杂到能写小说,一个 struts-config.xml 比小说还长。 现在什么情况?\nSpring MVC 和 Spring Boot 出来后,Struts 直接被打入冷宫。\n 去年我在 GitHub 上搜 Struts2,最新的 commit 还是 2018 年,下面有条评论:“Still alive?(还活着?)”\n 官方回复:“Yes, but barely.(活是活着,但只剩一口气了。)”

一句话总结:\nStruts 就像诺基亚 N95,当年砸核桃神器,现在只能当备用机,还得插张 2G 卡。

四、 第三位选手:Hibernate 的 HQL

Hibernate 当年有多牛?牛到不用写 SQL,直接 session.save(user) 就能存数据库。\n 但 HQL(Hibernate Query Language)这个玩意儿,现在看就像用文言文写 SQL。

HQL 的迷惑行为:

  • 写个查询:from User u where u.name = ’ 老王 ‘,看起来挺优雅。

  • 一旦关联三四个表,HQL 能长到让你怀疑人生,比如:\nfrom User u left join fetch u.orders o left join fetch o.items i where u.id = 1 为啥被淘汰?

  • JPA 和 Spring Data JPA 出来后,直接 findByName(” 老王”),连 SQL 都不用写。

  • MyBatis 更狠,SQL 写回 XML 里,至少还能 Ctrl+C/Ctrl+V,HQL 改起来像在解奥数题。 真实吐槽:\n 我同事小李,当年用 HQL 写了 2000 行的查询,后来数据库从 MySQL 迁到 Oracle,HQL 直接罢工。\n 小李一边改代码一边骂:“HQL 这玩意儿,跟女朋友一样,说翻脸就翻脸,说生气就生气。”

一句话总结:\nHQL 就像文言文,当年觉得高大上,现在只想说:“还是原生 SQL 好写!”

五、 第四位选手:Applet

00 后可能没见过 Applet,这玩意儿当年能在网页里直接跑 Java 代码。\n 比如打开一个网页,突然弹出一个“计算鸡兔同笼”的小程序,八成就是 Applet 干的。

Applet 的巅峰:

  • 2000 年初,网上全是“用 Java Applet 实现贪吃蛇”的教程。

  • 配合 Swing,能做出“五彩斑斓的黑”的界面。 死因:

  • 浏览器不支持了(Chrome 从 2015 年就彻底拉黑)。

  • 安全问题太多,跑个 Applet 等于给电脑开扇门,黑客想来就来。 现在去哪了?\nApplet 的坟头在 Oracle 官网的“Deprecated”页面里,和 Flash Player 作伴。\n 去年我清理旧硬盘,发现一个 2015 年写的 Applet 版“连连看”,运行时报错:java.lang.UnsupportedClassVersionError,像极了前任发来的“在吗?”

一句话总结:\nApplet 就像早年的 Flash 小游戏,现在打开只能看到“此插件不受支持”,和青春一样,回不去了。

六、 第五位选手:EJB

EJB(Enterprise JavaBeans)当年是“高大上”的代名词。\n 一说“我在用 EJB 做分布式”,就像现在说“我在用区块链重构支付系统”。

EJB 的“壕”点:

  • 支持分布式事务,能同时扣你银行卡、支付宝、微信的钱(误)。

  • 配合 WebLogic/WebSphere,部署一次能跑半年(启动也花半小时)。 为啥凉了?

  • 配置复杂到需要专门的“EJB 工程师”,现在这岗位跟“传呼机维修师”差不多。

  • Spring 出来后,一个@Transactional 注解搞定分布式事务,EJB 当场失业。 真实故事:\n 我 2015 年接了个银行项目,用 EJB2.0 写了 3 个月,光配置文件就堆了几百 M。\n 后来客户说:“能不能快点上线?”我默默改成了 Spring,一周搞定。\n 客户感动得差点给我颁锦旗:“技术选型鬼才”。

一句话总结:\nEJB 就像企业级开发的航空母舰,现在 Spring Boot 是快艇,谁还开航母去打鱼?

七、 那些“半死不活”的技术

  • Ant:Maven 和 Gradle 出来后,Ant 成了“构建工具界的 IE6”。
  • JSTL:当年为了不在 JSP 里写 Java 代码,现在连 JSP 都没了。
  • J2ME:手机 Java 开发,当年用诺基亚 N73 跑“贪吃蛇”,现在只剩下安卓/iOS 一统江湖了。

八、技术没有永远的 C 位,但程序员有

写到这里,突然有点感慨。

我们这一代人,见证了 Java 从“一次编写,到处运行”到“一次重构,到处报错”。

那些被淘汰的技术,就像年轻时的 QQ 农场,现在看虽然非主流,但那是我们一路跌跌撞撞走来的见证。\n 所以,别再纠结“要不要学 JSP”了,就像别再纠结“要不要买 BP 机”一样。

技术会过时,但解决问题的思路不会。

今天的 Spring Cloud、Kotlin、GraalVM,可能就是明天的“JSP”。

保持好奇,保持学习,保持头发(尽量)。

最后,用一句某位大佬的话结尾:“程序员最大的护城河,不是会多少框架,而是能随时推倒重来。”

共勉,我去改 Bug 了。

希望文章对您有所帮助

我是晓凡,再小的帆也能远航

我们下期再见 ヾ (•ω•`)o (●’◡’●)