当前位置: 首页 > news >正文

那些年我们一起追过的Java技术,现在真的别再追了!

一、写在前面

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

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

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

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

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

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

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


后端-前端-测试都需要,技术大厂→跳板机会,待遇和稳定性都还不错,感兴趣可试试~

二、 第一位选手:JSP

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

为啥当年火?

  • 不用学一堆前端框架,一个out.println("<h1>Hello World</h1>")就能跑。
  • 配合Struts1,简直是“双击666”的黄金搭档。

为啥现在凉了?

  • 代码和HTML搅成一锅粥,后期维护堪比“屎山考古”。
  • 现在随便一个Vue/React,能把JSP按在地上摩擦出。

真实案例:
我2015年接了个老项目,用JSP+Struts1做了个OA系统。

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


三、 第二位选手:Struts1/2

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

Struts1的辉煌:

  • 第一个真正意义上的MVC框架,让Servlet从“野路子”变成“正规军”。
  • 配合JSP,简直是“黄金搭档”,就像赵本山和宋丹丹。

Struts2的尴尬:

  • 刚出来时被当成“救世主”,结果因为漏洞太多,被黑客当成“提款机”。
  • 配置XML复杂到能写小说,一个struts-config.xml比小说还长。

现在什么情况?
Spring MVC和Spring Boot出来后,Struts直接被打入冷宫。
去年我在GitHub上搜Struts2,最新的commit还是2018年,下面有条评论:“Still alive?(还活着?)”
官方回复:“Yes, but barely.(活是活着,但只剩一口气了。)”

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


四、 第三位选手:Hibernate的HQL

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

HQL的迷惑行为:

  • 写个查询:from User u where u.name = '老王',看起来挺优雅。
  • 一旦关联三四个表,HQL能长到让你怀疑人生,比如:
    from 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改起来像在解奥数题。

真实吐槽:
我同事小李,当年用HQL写了2000行的查询,后来数据库从MySQL迁到Oracle,HQL直接罢工。
小李一边改代码一边骂:“HQL这玩意儿,跟女朋友一样,说翻脸就翻脸,说生气就生气。”

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


五、 第四位选手:Applet

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

Applet的巅峰:

  • 2000年初,网上全是“用Java Applet实现贪吃蛇”的教程。
  • 配合Swing,能做出“五彩斑斓的黑”的界面。

死因:

  • 浏览器不支持了(Chrome从2015年就彻底拉黑)。
  • 安全问题太多,跑个Applet等于给电脑开扇门,黑客想来就来。

现在去哪了?
Applet的坟头在Oracle官网的“Deprecated”页面里,和Flash Player作伴。
去年我清理旧硬盘,发现一个2015年写的Applet版“连连看”,运行时报错:java.lang.UnsupportedClassVersionError,像极了前任发来的“在吗?”

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


六、 第五位选手:EJB

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

EJB的“壕”点:

  • 支持分布式事务,能同时扣你银行卡、支付宝、微信的钱(误)。
  • 配合WebLogic/WebSphere,部署一次能跑半年(启动也花半小时)。

为啥凉了?

  • 配置复杂到需要专门的“EJB工程师”,现在这岗位跟“传呼机维修师”差不多。
  • Spring出来后,一个@Transactional注解搞定分布式事务,EJB当场失业。

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

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


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

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

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

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

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

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

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

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

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

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

共勉,我去改Bug了。

——转载自:程序员晓凡


文章转载自:

http://Hgyb4XlY.dwfst.cn
http://oRn4ofJu.dwfst.cn
http://PHM2cDtw.dwfst.cn
http://9vJGt4Cm.dwfst.cn
http://xzUEriml.dwfst.cn
http://l1trwGWV.dwfst.cn
http://cUMNirZb.dwfst.cn
http://V34hIOsq.dwfst.cn
http://dCwV5fv4.dwfst.cn
http://nQC6S01N.dwfst.cn
http://vNZz9lS0.dwfst.cn
http://grdvKzCn.dwfst.cn
http://4mdUEnSC.dwfst.cn
http://XvD9ymu5.dwfst.cn
http://x65EBx42.dwfst.cn
http://CnB9JNVR.dwfst.cn
http://H3fyFcFk.dwfst.cn
http://2eYN1Gvj.dwfst.cn
http://Qs0HPFDj.dwfst.cn
http://msafd7OB.dwfst.cn
http://RCGG5xLx.dwfst.cn
http://LG14KXES.dwfst.cn
http://f0rk1VKy.dwfst.cn
http://8kQJuBG3.dwfst.cn
http://fv3IGWvz.dwfst.cn
http://xoVRVKKe.dwfst.cn
http://rQIe44Ol.dwfst.cn
http://v6SJfncU.dwfst.cn
http://CrzBQhu3.dwfst.cn
http://LCSxw0KE.dwfst.cn
http://www.dtcms.com/a/366279.html

相关文章:

  • 记一次 Nuxt 3 + pnpm Monorepo 中的依赖地狱:`@unhead/vue` 引发的致命错误
  • 前端基础(四十三):文本数据解析为键值对
  • vue3入门- script setup详解上
  • JS(DOM对象)
  • Linux内存管理章节三:绘制Linux的内存地图:内核与用户空间布局详解
  • window使用ffmep工具,加自定义脚本执行视频转码成h264(运营人员使用)
  • webrtc之语音活动上——VAD能量检测原理以及源码详解
  • STM32H750 RTC介绍及应用
  • Rewind-你人生的搜索引擎
  • S32K328上芯片内部RTC的使用和唤醒配置
  • Paraverse平行云实时云渲染助力第82届威尼斯电影节XR沉浸式体验
  • 苹果Vision Air蓝图或定档2027,三星/微美全息加速XR+AI核心生态布局卡位
  • 低代码高效搭建应用,轻松应对多场景需求
  • 鸿蒙分布式数据同步失败全解
  • 执行select * from a where rownum<1;,数据库子进程崩溃,业务中断。
  • 【kernel】binder死亡代理
  • Oracle 数据库使用事务确保数据的安全
  • 数据库系统工程师软考备战:第一篇 - 数据库系统基础与体系结构
  • oracle、mysql等基于结果创建数据
  • 达梦数据库-共享内存池
  • 机电设备运维平台_HawkEye智能运维平台_璞华大数据
  • OpenTenBase vs MySQL vs Oracle,企业级应用数据库实盘对比分析
  • NineData发布 Oracle 到 MySQL 双向实时复制,助力去 O 战略与数据回流
  • 数据库小册(1)
  • 新客户 | TDengine 时序数据库赋能开源鸿蒙物联展区实时监控与展示
  • jenkins使用ansible单节点lnmp
  • Docker(③MobaXterm连接WSL Ubuntu)
  • Day35 TCP实时聊天程序实现(多线程)
  • 兴趣电商内容数据洞察未来市场走向研究——基于开源AI智能名片链动2+1模式S2B2C商城小程序的实践
  • 机器学习:后篇