那些年我們一起追過的Java技術(shù),現(xiàn)在真的別再追了!
大家好,我是曉凡。
一、寫在前面
前兩天,有粉絲朋友小趙,興沖沖地問我:“凡哥,我想學(xué)JSP,網(wǎng)上教程可便宜了,9塊9包郵!”
我當(dāng)場差點把剛喝下去的冰美式噴到他臉上。
“兄弟,JSP現(xiàn)在連墳頭草都三米高了,你學(xué)它干嘛?給歷史博物館交簡歷嗎?”
小趙一臉懵:“可我看招聘網(wǎng)站上,還有公司寫‘熟悉JSP優(yōu)先’??!”
我嘆了口氣:“那八成是HR把十年前的JD復(fù)制粘貼了,就跟把‘熟練使用傳呼機’寫進崗位要求一樣?!?/p>
所以今天,咱們來聊聊那些當(dāng)年火得一塌糊涂,如今連骨灰盒都找不到的Java技術(shù)。
友情提示:本文可能會引起部分老程序員的“爺青回”癥狀,請自備紙巾。
二、 第一位選手:JSP
想當(dāng)年,JSP(Java Server Pages)可是Web開發(fā)界的頂流。
寫個頁面,<% %>里嵌Java代碼,跟現(xiàn)在小學(xué)生寫作文“有一天,我撿到了一分錢”一樣順手。
為啥當(dāng)年火?
- 不用學(xué)一堆前端框架,一個
out.println("<h1>Hello World</h1>")就能跑。 - 配合Struts1,簡直是“雙擊666”的黃金搭檔。
為啥現(xiàn)在涼了?
- 代碼和HTML攪成一鍋粥,后期維護堪比“屎山考古”。
- 現(xiàn)在隨便一個Vue/React,能把JSP按在地上摩擦出。
真實案例:
我2015年接了個老項目,用JSP+Struts1做了個OA系統(tǒng)。
客戶找我改需求,我打開eclipse,看到幾千行的<% if (user.isAdmin()) { %>,差點當(dāng)場跑路。
三、 第二位選手:Struts1/2
Struts1有多經(jīng)典?經(jīng)典到當(dāng)年面試必問:“說說Struts1的工作流程?!?br> 現(xiàn)在再問,面試官可能會以為你在背歷史書。
Struts1的輝煌:
- 第一個真正意義上的MVC框架,讓Servlet從“野路子”變成“正規(guī)軍”。
- 配合JSP,簡直是“黃金搭檔”,就像趙本山和宋丹丹。
Struts2的尷尬:
- 剛出來時被當(dāng)成“救世主”,結(jié)果因為漏洞太多,被黑客當(dāng)成“提款機”。
- 配置XML復(fù)雜到能寫小說,一個
struts-config.xml比小說還長。
現(xiàn)在什么情況?
Spring MVC和Spring Boot出來后,Struts直接被打入冷宮。
去年我在GitHub上搜Struts2,最新的commit還是2018年,下面有條評論:“Still alive?(還活著?)”
官方回復(fù):“Yes, but barely.(活是活著,但只剩一口氣了。)”
一句話總結(jié):
Struts就像諾基亞N95,當(dāng)年砸核桃神器,現(xiàn)在只能當(dāng)備用機,還得插張2G卡。
四、 第三位選手:Hibernate的HQL
Hibernate當(dāng)年有多牛?牛到不用寫SQL,直接session.save(user)就能存數(shù)據(jù)庫。
但HQL(Hibernate Query Language)這個玩意兒,現(xiàn)在看就像用文言文寫SQL。
HQL的迷惑行為:
- 寫個查詢:
from User u where u.name = '老王',看起來挺優(yōu)雅。 - 一旦關(guān)聯(lián)三四個表,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改起來像在解奧數(shù)題。
真實吐槽:
我同事小李,當(dāng)年用HQL寫了2000行的查詢,后來數(shù)據(jù)庫從MySQL遷到Oracle,HQL直接罷工。
小李一邊改代碼一邊罵:“HQL這玩意兒,跟女朋友一樣,說翻臉就翻臉,說生氣就生氣?!?/p>
一句話總結(jié):
HQL就像文言文,當(dāng)年覺得高大上,現(xiàn)在只想說:“還是原生SQL好寫!”
五、 第四位選手:Applet
00后可能沒見過Applet,這玩意兒當(dāng)年能在網(wǎng)頁里直接跑Java代碼。
比如打開一個網(wǎng)頁,突然彈出一個“計算雞兔同籠”的小程序,八成就是Applet干的。
Applet的巔峰:
- 2000年初,網(wǎng)上全是“用Java Applet實現(xiàn)貪吃蛇”的教程。
- 配合Swing,能做出“五彩斑斕的黑”的界面。
死因:
- 瀏覽器不支持了(Chrome從2015年就徹底拉黑)。
- 安全問題太多,跑個Applet等于給電腦開扇門,黑客想來就來。
現(xiàn)在去哪了?
Applet的墳頭在Oracle官網(wǎng)的“Deprecated”頁面里,和Flash Player作伴。
去年我清理舊硬盤,發(fā)現(xiàn)一個2015年寫的Applet版“連連看”,運行時報錯:java.lang.UnsupportedClassVersionError,像極了前任發(fā)來的“在嗎?”
一句話總結(jié):
Applet就像早年的Flash小游戲,現(xiàn)在打開只能看到“此插件不受支持”,和青春一樣,回不去了。
六、 第五位選手:EJB
EJB(Enterprise JavaBeans)當(dāng)年是“高大上”的代名詞。
一說“我在用EJB做分布式”,就像現(xiàn)在說“我在用區(qū)塊鏈重構(gòu)支付系統(tǒng)”。
EJB的“壕”點:
- 支持分布式事務(wù),能同時扣你銀行卡、支付寶、微信的錢(誤)。
- 配合WebLogic/WebSphere,部署一次能跑半年(啟動也花半小時)。
為啥涼了?
- 配置復(fù)雜到需要專門的“EJB工程師”,現(xiàn)在這崗位跟“傳呼機維修師”差不多。
- Spring出來后,一個
@Transactional注解搞定分布式事務(wù),EJB當(dāng)場失業(yè)。
真實故事:
我2015年接了個銀行項目,用EJB2.0寫了3個月,光配置文件就堆了幾百M。
后來客戶說:“能不能快點上線?”我默默改成了Spring,一周搞定。
客戶感動得差點給我頒錦旗:“技術(shù)選型鬼才”。
一句話總結(jié):
EJB就像企業(yè)級開發(fā)的航空母艦,現(xiàn)在Spring Boot是快艇,誰還開航母去打魚?
七、 那些“半死不活”的技術(shù)
- Ant:Maven和Gradle出來后,Ant成了“構(gòu)建工具界的IE6”。
- JSTL:當(dāng)年為了不在JSP里寫Java代碼,現(xiàn)在連JSP都沒了。
- J2ME:手機Java開發(fā),當(dāng)年用諾基亞N73跑“貪吃蛇”,現(xiàn)在只剩下安卓/iOS一統(tǒng)江湖了。
八、技術(shù)沒有永遠(yuǎn)的C位,但程序員有
寫到這里,突然有點感慨。
我們這一代人,見證了Java從“一次編寫,到處運行”到“一次重構(gòu),到處報錯”。
那些被淘汰的技術(shù),就像年輕時的QQ農(nóng)場,現(xiàn)在看雖然非主流,但那是我們一路跌跌撞撞走來的見證。
所以,別再糾結(jié)“要不要學(xué)JSP”了,就像別再糾結(jié)“要不要買BP機”一樣。
技術(shù)會過時,但解決問題的思路不會。
今天的Spring Cloud、Kotlin、GraalVM,可能就是明天的“JSP”。
保持好奇,保持學(xué)習(xí),保持頭發(fā)(盡量)。
最后,用一句某位大佬的話結(jié)尾:“程序員最大的護城河,不是會多少框架,而是能隨時推倒重來。”
共勉,我去改Bug了。
希望文章對您有所幫助
我是曉凡,再小的帆也能遠(yuǎn)航
我們下期再見 ヾ(?ω?`)o (●'?'●)
本文來自博客園,作者:程序員曉凡,轉(zhuǎn)載請注明原文鏈接:http://www.rzrgm.cn/xiezhr/p/19001990
浙公網(wǎng)安備 33010602011771號