Python、Rust 都火了一个 Java 老炮,想跟你聊聊我们在守什么
不端着,说点写了十几年 Java 的实在话
回一条读者留言,也顺便把 MateCloud 的立场讲透上一篇发完,后台有位读者留言,挺不客气,但我喜欢。
他说:你这文章一股 AI 味,通篇正确的废话。而且——Python、Node、Rust 一个比一个火,你们还抱着 Java 不撒手,图啥?这问题问到点子上了。今天我不端着,把 PPT 腔收起来,以一个写了十几年 Java、也被 Java 坑过无数次的老炮身份,跟你唠个明白。
咱们先把话说前头,别一上来就护犊子。Java 当年被骂的那些,我一条都不洗。
啰嗦?是真啰嗦。写个数据类,getter setter equals hashCode toString 一大坨,几十行下去,真正的业务逻辑三行。启动慢、吃内存?也是真的——一个 Spring Boot 应用冷启动十几秒,堆内存几百兆打底,上云、上 Serverless,按秒计费的场景里它就是个累赘。为了扛并发写异步?我至今记得被 CompletableFuture 和一层套一层的回调折磨到凌晨的那些夜晚,代码拧成了麻花,栈都看不懂了。
所以那些年轻人转头去写 Go、写 Rust,我一点不觉得他们叛变。换我刚入行、手里是这么个 Java,我也想跑。问题是——你现在骂的,还是那个 Java 吗?
你有没有过这种时候:接手一个五年前的老项目,打开 pom 一看,Java 8、Spring Boot 2,心里咯噔一下。很多人对 Java 的印象,就永远定格在了那个年代。可他们不知道的是——这些年 Java 闷不吭声,把当年被骂的账,一笔一笔全还了。
并发那道坎,虚拟线程(Loom)直接给填平了——现在你写最朴素的同步阻塞代码,一台机器扛百万级并发,那套异步回调的麻花,可以扔了。启动慢吃内存,GraalVM 原生镜像和 CRaC 把冷启动干到了毫秒级、内存砍掉一大截,上 Serverless 不再吃亏。啰嗦?records 一行顶过去几十行,再加上密封类、模式匹配、文本块,今天的 Java 写起来,清爽得你不敢认。
所以这里有个特别拧巴的误会:真正"守旧"的,不是我们,是那些停在 Java 8 的人。我们恰恰是那批第一时间上 Java 21、上 Spring Boot 4、上 Spring AI 的人。我们守的从来不是"老 Java",是"最新的 Java"。用一个 2015 年的印象来判断 2025 年的技术选型,这本身才是最大的技术债。
再说回 Node.js 和 Rust。我想先澄清个态度:我一点不贬低它们,反而觉得它们各自牛得很。但"一门技术很火",跟"它适合你手里那套系统",是两码事。
Node.js 是全栈和前端工程的一把好手——BFF 接口聚合、实时应用、前端工具链,前后端一套 JS、上手极快,那是它的主场。Rust 是系统级的性能怪兽,数据库内核、边缘、WASM,要那种极致的、无 GC 的确定性,非它莫属。Python 更不用说,数据和 AI 那一摊,生态无敌。
可你我每天在写的,是这些吗?我们绝大多数人写的是企业业务系统:交易、工作流、审批、权限、报表,一堆要跟人打交道、要改十年、要过审计的东西。这种系统,拼的不是语法多新、跑分多高,拼的是生态够不够厚、规范能不能落地、十年后还改不改得动。而这,恰恰是 Java 加 Spring 打磨了二十多年的主场。
我见过跟风把业务系统用 Rust 重写的团队,写到一半,被所有权和借用检查搞得寸步难行,最后灰头土脸改回来。不是 Rust 不好,是拿手术刀切菜,再快的刀也别扭。
年轻的时候我也是个"语言党",觉得选型就是比谁语法帅、谁跑分高。写了十几年才琢磨过味来:语言这玩意儿,真砸进一个大项目里,占的分量没你想的那么重。真正让你半夜睡不着的,是另外两样——生态,和人。
你想想平时干的活:接个消息队列、搞分布式事务、上分库分表、配一套像样的监控、再对接一堆十年前的老系统。这些活儿在 Java 生态里,早有被无数生产环境捶打过的成熟方案——真出了问题,一搜,十年前就有人踩过这个坑,还把答案给你写好了。换个年轻生态呢?很多轮子得你自己造,很多坑得你一个人半夜对着日志慢慢踩。
再说人。一个几百号人的团队要一起写十年,靠的从来不是那几个天才,靠的是"一套规矩,能让一群普通工程师照着做、还不容易做歪"。Java 招人好招、社区够大、规矩也成熟,Spring 加 DDD 这套,基本能保证新人照葫芦画瓢也画不歪。Rust 那套所有权、借用检查,三个高手写个小工具是真香,可你让三百个人拿它写业务系统试试?光把团队教明白,就够你喝一壶。所以选型这事,真不是选门语言谈场恋爱,是赌往后十年,这帮人能不能一起把这摊活稳稳当当干下去。
很多人以为,AI 会写代码了,语言就无所谓了。我的判断正相反——AI 时代,Java 是顺风局。
道理特简单,你自己拿 AI 写过代码就有体会:模型强不强,看它喂了多少料。全世界二十多年攒下来的 Java、Spring 代码,加上无数踩坑问答,那是个天文数字。所以你让 AI 写 Java 业务代码,它又快又稳、生成完你基本能直接用;你让它拿 Rust 写一套复杂业务,它自己都直哆嗦。
更关键的是,Java 生态正在把自己变成 AI 的"一等公民"。Spring AI 让接大模型像接个普通 Bean 一样自然;一个 @Tool 注解,就能把你的业务方法变成 AI 能调用的工具;再往上,MCP 让整个 Java 服务天然能被 AI Agent 编排。这些前几篇都拆过。当 AI 成了基础设施,Java 这套又厚又稳、还天然可被 AI 调用的生态,优势只会被放大,不会被抹平。
聊到这儿,那位读者的问题,我可以正面回答了。
我们守的,从来不是 Java 这门语言本身。语言是会变的,谁好用用谁。我们守的是——用最成熟的生态、最低的协作成本,把一套复杂业务稳稳当当撑上十年,还能一路吃到最新技术红利这件事。
而今天的 Java,恰好是把这件事做得最好的那个选择:它有二十年的生态厚度,又在虚拟线程、Spring Boot 4、Spring AI 上一点没落下最新的浪潮。我们不是抱着旧船不肯下,我们是把这条老船,换上了最新的发动机。
光说立场没劲,得有东西撑着。这东西就是 MateCloud——我们把上面这些话,一行行写进了这套开源骨架里。你把代码拉下来会发现,它一点没端着:
地基全是最新的——Java 21、Spring Boot 4、Spring Cloud 2025、Spring AI 2.0;业务服务默认就开了虚拟线程,同步代码放心写;跨服务调用交给 Dubbo,接口改错了编译期就报给你,不用等上线了才发现;架构照着 DDD 四层来,新人想把代码写歪,都找不着地儿下手;一条 mate-cli 命令甩出一个规规矩矩的模块,加个 --mcp,AI 还能直接来调。这些前面四篇都一篇篇掰开揉碎讲过了。
它不炫技,也不追时髦。就想证明一句话:用最新的 Java,照样能把 AI 原生、云原生这些最时髦的事,干得又稳又漂亮。
别人跟风换语言,我们只是把 Java 这门老手艺,用到了 2025 年该有的样子。
这篇没有代码,也没有架构图堆料,就是一个老炮的几句实在话。你要是不同意,评论区见,我这人经得起拍砖。要是你也是那个"被误解的 Java 党",那这杯,敬你。
| mate.vip |
| github.com/matevip/matecloud |
| Java 21 · Spring Boot 4 · Spring Cloud 2025 · Spring AI 2.0 · Dubbo 3.3 |
本文为观点特别篇,配图原创。文中判断为作者个人立场,不代表对 Node.js / Rust / Python 的贬低——各有主场,尊重每一门好技术。