> 技术文档 > 字节大量使用新语言,Go、Rust等,为什么阿里抱着Java不松手?_字节宣布退出go语言了吗

字节大量使用新语言,Go、Rust等,为什么阿里抱着Java不松手?_字节宣布退出go语言了吗

最近几年,技术圈的新语言风头正劲:

  • Go 以其并发性能和部署便利,风靡微服务圈

  • Rust 凭借“性能 + 安全”的双重保障,成了系统编程的新宠

字节跳动早早地大规模投入使用 Go 和 Rust,尤其在服务端、音视频基础设施和边缘计算领域,几乎成了它们的默认语言。

阿里巴巴却显得“稳得住”——仍然坚定地以 Java 为核心开发语言。
为什么阿里“不追风”?它到底在坚持什么?又是不是在错失“新机会”?

历史可循

1. 不同大厂的语言技术选型,深受历史与地域影响。

在字节跳动崛起之前,中国互联网公司已经形成了地域化的技术派系:北京的百度、滴滴多采用 PHP/C++;深圳的腾讯同样以 PHP/C++ 为主;而阿里、美团则自成体系,深耕 Java。这些技术选型不仅受制于当时语言生态的成熟度,也与人才流动紧密相关。例如,字节吸纳了大量来自百度、360、滴滴等公司的工程师,形成了以 PHP/C++(后转向 Go)的技术基因。

2. Java 之所以“稳如磐石”,是因为迁移成本高、收益不明显。

尽管 Go 和 Rust 等新语言在性能或开发效率上具有吸引力,但对于以 Java 为主的大厂(如阿里)来说,现有生态太重、积累太深。Java 本身已经具备良好的工程效率和广泛适应性(中间件、大数据、Android、业务 API 等),而 Go 缺乏面向对象设计哲学、Rust 的门槛和风险都偏高,从 Java 转换的成本远大于潜在收益,因此没有充分动因去“重构一切”。

3. 多语言并存是常态,但“主语言”受业务重心和组织结构所限。

无论是阿里、字节还是腾讯,美团,几乎都在使用多种语言(Java、C++、Go、PHP、Rust 等),只是比例不同而已。Rust 更多用于系统底层或新模块开发,Go 用于替代部分原本用 C++ 编写的服务层组件。最终,大厂的主力语言形成,是技术历史积累、组织背景、人员构成、收益评估等多重因素长期作用的结果。简单语言之争意义不大,关键是每家大厂都在根据自身结构,做出最符合自身利益的技术选择。

讲故事

我们再来讲个故事:

当年淘宝刚起步那会儿,用的是 PHP,结果用户一多,系统就开始“原地爆炸”,撑都撑不住,最后只能认命改用 Java,甚至还把 Sun 原厂请来帮忙撑场子。结果 Java刚站稳,Oracle 数据库又不行了,淘宝技术人员哭着去找 Oracle 求解决,Oracle 却表示淡定:“你这个需求,全太阳系就你一个有。”逼得淘宝一怒之下走上了去 IOE 的不归路,从此开启自研之旅,越做越硬核。

为啥阿里死守 Java?因为淘宝不是抖音,视频推荐错了没人管,可你要是把用户购物车里的 998 算成了 999,客户能原地心梗。那可是和钱直接挂钩的高并发系统,钱少了客户报警,钱多了客户报警,必须精确到小数点后一毛不差。更别提每天中午十二点,几千万人吃饱撑的上淘宝狂刷收藏夹,动不动点进上百个商品页面看来看去,啥也不买。服务器眼泪掉下来,Redis CPU 烧到发光,马云气得直拍桌子:“就看!就看!就看!啥也不买!啥也不买!啥也不买!”……就是这么个访问量比交易量还可怕的电商江湖,才让 Java 在阿里稳坐钓鱼台,谁来也撼不动。

图片

为什么新公司喜欢新语言

从职场生存角度讲,如果你是个3到5年的程序员,面前放着Java和Go两个选项,聪明点你得往Go那边靠。为啥?因为Java圈老鸟太多,5年起步,10年以上满地走,进去就像闯进资深动物园,不管你多努力,永远都轮不到你当老虎。选Go就不一样了,语言新、生态新、竞争少,说不定你写个半年,就能在公司里装作“Go一哥”。而老Java程序员虽然能转Go,但相当于让武林高手放下宝剑改练双截棍,虽说能练,但没兴趣、也没必要,转型成本太高,对他们提升也不大。你反而轻装上阵,占据制高点,还能顺便在人堆里立个flag:“我Go最懂!”

假设你是一个2018年的实习生,没选Vue也没选Java,反手学了刚冒头的小程序,结果起步就拿了7k,跳槽9k,那时候别说武汉了,上海不少实习生都还在啃3k。小程序难吗?不难。但难的是你学了别人没学,踩上了新风口。公司不是看你技术难度,是看你有没有“刚好会”。所以啊,别傻乎乎拿10年Java履历跟人比Go经验,老板要的是你能上,不是你能吹。换句话说——新技术是年轻人打破职场“老鸟护城河”的梯子,别犹豫,快冲。

网友评价

能从8活到21的项目,是不可能轻易地升到21的。

图片

没有新轮子怎么有事干?

图片

总结

近几年流行把 Java 项目改写成 Go,再从 Go 改成 Rust,理由大多是为了“省资源”,但其实只要坚持使用 Java,升级到 Java 21 并结合虚拟线程和分代 ZGC,就能轻松获得多倍性能提升和大幅内存节省,而大部分业务代码基本不用改动。

相比频繁换语言折腾,不如抱紧 Java 这个成熟生态的大腿,紧跟官方最佳实践,既稳定又高效。很多所谓的“重写”行为,说到底更多是为了刷绩效、做汇报,而非真正的技术或业务收益。

Java面试题库,以备不时之需!