Java,1996年生,2035年卒

前言:本文是2195年“程序员考古年会”的压轴发言稿,起因是三年前考古人员无意间发现了几十台废弃的电脑,将部分电脑恢复以后,惊喜地发现了一门早已失传的编程语言:Java,从此掀起了一股Java考古热潮。

01

起源

Java是一家叫做Sun的公司在1996年发明的,考古界曾一度认为 Sun 是一种天体崇拜术语。

实际上,Sun的意思是Stanford University Network,上古公司喜欢使用高校名缩写作为品牌背书,这种策略在当时被称为“名校营销”。

考古界认为,Sun公司是怀着改变世界的野心和对C++的怨念,推出了Java。

因为Sun承诺的是一种理想主义语言:

Write once, Run Anywhere。

没有指针,自动内存管理。

纯洁的面向对象。

Java 提出了“虚拟机”概念,JVM 成为它跨平台的魔法引擎。

考古人员发现,那时的网页只是静态的文字与表格,而 Java Applet 却在浏览器里跑出旋转的立方体、滑动的菜单甚至小游戏,令当年的程序员们兴奋不已。

人们开始相信:Java 就是互联网的未来。

当然,也有一些可疑的早期迹象:

- 一个简单的Hello World 就要写 5 行;

- 用户必须等待一分钟下载Applet代码,启动JVM

- Applet 经常崩。

据2002年《程序员吐槽年鉴》统计,每10个Applet用户中,有7人曾因JVM崩溃而情绪波动,3人因此怀疑人生,1人因此转学去学Flash。

为了彰显对Java的重视,Sun居然把自己在纳斯达克的股票交易代码都改成了JAVA。

这是科技公司第一次为一门语言押上身家性命,相比之下,比Sun厉害得多的微软还没有把股票代码改成C#。

JAVA是纳斯达克史上唯一为一门语言命名的股票代码,后被认为是“信仰式绑定商业”的经典失败案例,后世常把它和元宇宙(Meta)概念炒作并称“IT历史双蠢”。

02

上位

1998年,Java推出了J2EE,一下子让它找到了一大片未经开垦的处女地:企业Web应用开发。

这些企业应用都跑在服务器端,那里有强劲的CPU,几乎无限的内存,就缺乏一个严谨的、容易编写的、健壮的、适合大规模团队协作的编程语言。

Java的弱点没有了,优点被无限放大。

J2EE横扫甲方IT部门,一排排的Java程序员们正襟危坐,写接口、实现类、XML 配置、Session Bean、DAO、VO、DTO、JSP、Servlet.......

现在很难理解这些术语的具体含义,考古人员猜测它们是开发企业应用的关键技术。

一整套“架构严谨”的流程把它们打包,运行在昂贵的应用服务器当中。

Java 与 XML 被称为“企业鸳鸯”:一个专注冗长,一个专注啰嗦,却能完美协作,非常神奇。

考古人员还发现了一件更神奇的事情,很多公司喜欢在面试的时候问单例模式的7种写法,如果写不出来,面试官就会终止面试,认为此人不合格。

考古学家对“模式”很感兴趣,经过认真的研究,竟然发掘出了21种模式!(但是传说有23种)。

《程序员考古》杂志上发表的21篇高质量论文,深入讲述了每种模式的起源,适用情况,具体用法,大家一致的结论是,设计模式简直就是为Java那复杂冗长的语法量身定制,让现代人嘘唏不已。

可惜的就是,考古人员只研究出了3种单例模式的写法,剩下的写法永远不知道了。

《设计模式:可复用面向对象软件的基础》被奉为神书。部分考古人员甚至将其归入“Java程序员宗教经典书”之一,其他两本为《Java 编程思想》《Effective Java》。

200年前的软件世界竞争非常激烈,IBM、Oracle、Amazon、Google等计算机巨头在Java上史无前例地联合起来,把矛头指向邪恶独裁者:微软。

有了Java,巨头们就可以卖性能更强的服务器,卖各种中间件,卖各种解决方案,卖各种咨询服务......

奇怪的是,发明Java的Sun没有通过Java赚到多少钱, 钱都被IBM和Oracle这两个大佬给赚走了,赚得盆满钵满。

相比于微软阵营Visual Studio一家独大,Java IDE也呈现出一片欣欣向荣的景象,JCreator、JDeveloper、NetBean、JBuilder、IDEA、Eclipse百花齐放,没人知道为什么需要这么多Java IDE。

考古学家还发现,2000年初,开源框架也如雨后春笋般涌现:Spring解构EJB,Struts主宰MVC,Hibernate统一ORM。

Controller、Service、DAO,Java程序员把一个个简单的CRUD玩出了丰富的花样,让考古人员百思不得其解。

2004年,Java发布了5.0版本,鉴于之前的版本号都是1.1,1.2,1.3,1.4,现在突然跳到5.0 ,考古人员认为这是一个重要的里程碑。

Java 5.0带来了让无数程序员期待的范型功能,虽然“擦除式”范型被C++嘲笑,复杂的通配符也让程序员头晕,但Java程序员总体表示满意,并且开始嘲笑那些不支持范型的编程语言(比如早期的Go)。

Java 5.0还带来了注解的功能,可以作为元数据对程序进行“注释”,Spring如获至宝,XML从此失宠,注解开始满天飞。

Java被大量大学选为“第一门编程语言”,这在某种程度上,是个悲剧,它让 19 岁的学生以为,世界是由接口、抽象类、getter/setter 和 19 层继承组成的。

特别值得一提的是,培训班大量对外输出半路出家的Java程序员,最快的3个月就能输出一批,足以说明Java编程市场的需求有多么旺盛。

考古界一直在争论“码农”这次词的实际含义,火星大学著名的W教授认为这个词是对程序员的侮辱,因为编程在200年前是一种需要极高脑力的智力活动。

而月球大学的Z研究员则表示了完全不同的意见,他说程序员之所以自称码农,就是因为编程本质上是一种体力劳动。

两派争执不休,至今没有定论。

03

巅峰

2010年代,由于iPhone和Android手机的出现,人类进入了移动互联网时代。

虽然这两种手机现在看起来极其原始,非常难用,但引爆了一个全新的市场:手机App开发。

Java的运气相当不错,Android 选择了 Java 作为主要开发语言,准确来说,是 Java 语法 + Dalvik 虚拟机,但无论如何都给Java打了一针强心针。

那几年,Java 成为最热门的编程语言,不只是因为企业用它,而是因为数以百万计的年轻人为了写一个天气 App 而学习Java。

与此同时,后端世界也发生了天翻地覆的变化。

Hadoop 出现了。

考古发掘显示,那时大数据兴起,人类开始用成百上千台服务器处理微博、商品推荐、广告点击、IoT 传感器等亿级规模的数据流。

这些系统需要分布式存储、并行计算、高可用架构,而 Java——这门不轻盈但稳如老狗的语言——恰好拥有一切:线程池、GC、JVM、跨平台。

于是,Hadoop、Spark、Kafka、Flink……一个个核心组件都跑在 JVM 上,有的用 Java,有的用 Scala,但都得感谢 JVM。

大数据工程师们一边抱怨 Java 的冗长,一边往服务器上丢 Jar 包。

Java在移动互联网时代走向了巅峰。

2014年,Java 8.0 发布,开始支持Lambda表达式、函数接口、Stream API,从此那些嘲笑Java只会面向对象的人闭嘴了。

Java 8 广受好评,深受大家喜爱,10年以后,Java 23都推出了,还有无数人坚决守着Java 8不升级。

考古界发现程序员经常在说“996”这样的词语,这再次引发了剧烈的争论。

Z研究员认为996是好事情,因为商界大佬认为996是福报,何况很多行业比996还要厉害;

W教授认为这是对程序员身心的巨大摧残,要不然程序员怎么会搞996.icu .....

04

转折

进入微服务和容器编排的新时代,开发者开始追求一种信仰:启动快、内存小、实例多、伸缩快。

Kubernetes 统治了云端,Docker 成为新邮差,而 Java——这个曾在企业服务器里稳如老牛的存在——显得有些不合群:

启动一个 Spring Boot 微服务需要 15 秒;

它的镜像大小超过 300MB

每次部署,都像是启动一台 JVM 小型核电站;

在 Go 写的服务已经开始弹性扩容第 3 轮时,Java 还在“Initializing ApplicationContext”。

此句在企业日志中极为常见,考古人员最早以为是某种咒语,后经反复破解,确认其含义为“还没准备好,你再等等”。

人们开始尝试 Quarkus、Micronaut、GraalVM——希望通过 Ahead-of-Time 编译拯救这只老牛,但是在和Go、Node.js、Rust 竞争时已经力不从心。

年轻人正在学 Python 写数据处理、用 JavaScript 做前端、用 Go 写微服务。

Java 虽未衰亡,但已老态龙钟。

2023年,转折点到来了,一个叫做ChatGPT的弱智AI的出现,彻底敲响了Java的丧钟。

AI编程助手全面普及,软件开发正式进入“提示驱动开发”时代。

无论是资深程序员,还是新手程序员,都开始用提示词驱动AI来输出代码。

面对AI生成的一坨坨代码,Java那冗长的语法,强结构化的特性,即使实现一个简单功能就得需要写出完整得类,方法签名,类型声明、异常处理...... 

程序员不喜欢,因为无论阅读还是修改,都非常麻烦。

AI似乎也不喜欢Java,似乎生成代码的难度和token的成本都很高。

同样的任务,AI 更愿意用 Python、Go 、TypeScript等语言实现。

但实际上,无论任何编程语言,都和提示驱动开发格格不入,因为提示词还是自然语言,编程语言再怎么高级,它都是计算机语言,两者之间存在的天然鸿沟,让程序员在进行提示驱动开发的时候非常别扭。

因为简单的任务还行,对于复杂的任务,提示词很难准确到位,生成的代码不是这里有问题,就是那里有问题,得反复修改,改着改着AI就懵了,最后,程序员不得不自己亲自动手去改那一坨坨代码。

2030年,一个叫CloseAI的公司推出了X语言。

这是一门天生为提示词驱动而生的语言:结构灵活、容错能力强、语义抽象极佳。

它总能非常精确地反映程序员的意图,简洁高效地实现,从而迅速风靡全世界。

越来越多的公司将核心系统重写为X语言,或者部署在兼容X的服务平台。

相比X语言,Java就像当年的汇编一样,没有人愿意使用了。

用Java编写的那些至关重要的系统都成为了遗留系统。

考古发现,这一阶段程序员最常说的几个词就是:35岁,裁员。

考古界无法解释为什么程序员正处于年富力强的时候,就被公司抛弃了。

企业招聘的时候也要求35岁以下,让大龄程序员不得不考虑转行。

如果从25岁硕士毕业算起,程序员的职业生涯只有区区10年!

真是匪夷所思!

05

尾声

2033 年,Oracle 宣布终止对 JDK 的 LTS 版本支持。

2035 年,最后一所大学宣布将“编程导论”从 Java 改为 X语言。

考古界发现了最后一个询问Java情况的帖子,它的内容是:

“Java 死了吗?”

无人回复。

最后,考古委员会给Java写了一个墓志铭:

全文完,觉得不错的话点个赞或者在看吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值