大家好,我是晓凡。

一、写在前面

前两天,有粉丝朋友小赵,兴冲冲地问我:“凡哥,我想学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了。


希望文章对您有所帮助

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

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

那些年我们一起追过的Java技术,现在真的别再追了!的更多相关文章

  1. Java技术——你真的了解String类的intern()方法吗

    0.引言 什么都先不说,先看下面这个引入的例子:   String str1 = new String("SEU")+ new String("Calvin") ...

  2. Java技术开发程序员如果在2019年立足

    2019年的互联网环境相对以往来说要更复杂一些,互联网领域也正在经历从消费互联网向产业互联网转型的阵痛期.其实不少公司从2018年开始已经在陆续进行结构化调整,这些调整中的重要内容就是岗位调整,而岗位 ...

  3. 【原创】这道Java基础题真的有坑!我也没想到还有续集。

    前情回顾 自从我上次发了<这道Java基础题真的有坑!我求求你,认真思考后再回答.>这篇文章后.我通过这样的一个行文结构: 解析了小马哥出的这道题,让大家明白了这题的坑在哪里,这题背后隐藏 ...

  4. JVM笔记-Java技术体系与JVM概述

    1. 简述 Java 不仅仅是一门编程语言,还是一个由一系列计算机软件和规范组成的技术体系. Java 的广告词为 "一次编写,到处运行",之所以能够做到"跨平台&quo ...

  5. 作为Java技术面试官,我如何深挖候选人的技能

    作为Java资深技术面试官,首先我感觉有必要讲解"面试官深挖问题"的动机,在了解动机的前提下,大家才能更好地准备面试.面试官为什么要在一个点上深挖?两大目的.   1 首先是通过深 ...

  6. 向Java技术进军

    前两天有个朋友要我帮忙写个打印机服务,要求能应用在.net .Dephi.和java程序上面.看了下需求不难也就串口操作,所以就在周未写了个Win32的动态库,对于一个曾经写MFC程序的.net程序员 ...

  7. 【JAVA】基于MVC架构Java技术荟萃案例演练

    基于JAVA-MVC技术的顾客管理项目案例总结 作者 白宁超 2016年6月9日22:47:08 阅读前瞻:本文源于对javaweb相关技术和资料汇总,涉及大量javaweb基础技术诸如:Servle ...

  8. (转)如何学习Java技术?谈Java学习之路

    51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...

  9. 从程序员到CTO的Java技术路线图 作者:zz563143188

    在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样我们清楚的知道我们大概处于那个阶段和水平. Java程序员 高级特性 反射.泛型. ...

  10. Java技术的特点

    Java技术是一套完整的IT行业解决方案,其中包含了很多技术.最初是从解决家电设备联网通讯的方案发展起来的,其特点适用于Internet,于是在Internet广泛应用的环境下,迅速发展成为一种计算机 ...

随机推荐

  1. 环境搭建: Vue3+Echarts5+vue-eharts + 移动端rem适配

    对于数据可视化的最后一站, 就是移动数据报表的展示, 毕竟手机端的适普性, 便携性, 灵活性更高. 包括我自己也是更多在移动端进行轻量办公. 而用主流的商业BI平台在PC端的体验基本可打80分, 而在 ...

  2. Hexo-butterfly 接入腾讯混元大模型自动生成文章摘要(保姆教程)

    1.注册腾讯云账号 首先必须要有一个腾讯云的账号,没有的话在官网注册一个,注册完成之后,进行实名操作. 接下来,在产品中心搜索腾讯混元大模型,点击产品控制台进入,在模型广场选择自己想要的大模型 (复制 ...

  3. MySQL 情节:SQL 语句的表演

    本文由 ChatMoney团队出品 第一幕:解析与优化 - "翻译官与谋士" SQL 解析器是第一个上场的角色,任务就是把 SQL 请求翻译成 MySQL 能听懂的语言.就像你点餐 ...

  4. openxml文书工具 Aspose 工具 word to pdf

    aspose模板生成(文书工具) 动态数据 ${info} ${list.id} ${list.name} ${list.address} ${list.date} ${list.danwei} ${ ...

  5. 【前端AI实践】Lingma:使用工具辅助开发让你停不下来

    如果你用过 GitHub Copilot,那你对 AI 编程助手应该不陌生.而 Lingma 是阿里云推出的一款专注于编程场景的智能编码助手. 它深度集成在 VS Code.JetBrains 等主流 ...

  6. ChunJun框架在数据还原上的探索和实践 | Hadoop Meetup精彩回顾

    Hadoop是Apache基金会旗下最知名的基础架构开源项目之一.自2006年诞生以来,逐步发展成为海量数据存储.处理最为重要的基础组件,形成了非常丰富的技术生态. 作为国内顶尖的 Hadoop 开源 ...

  7. Linux 查找Redis配置信息

    前言 有时在使用Redis时密码或者配置信息经常忘记,应该怎么找回呢? 解决 如果设置了自启动,先查找服务状态(systemctl status redis服务名称) 根据服务可以找到服务的启动脚本, ...

  8. Wondows11安装 Docker Desktop 教程

    环境准备 确保电脑BIOS里面开启了虚拟化,可以任务管理器里面查看 启用wondows虚拟化支持 控制面板-程序-启用或关闭wondows功能 这里如果是家庭版,可能没有Hyper-v,没有就不勾 或 ...

  9. Centos下多种PHP拓展安装方法

    http://my.oschina.net/u/2400083/blog/518195

  10. C#.Net筑基-泛型T & 协变逆变

    01.什么是泛型? 泛型(Generics)是C#中的一种强大的强类型扩展机制,在申明时用"占位符"类型参数"T"定义一个"模板类型",比较 ...