HackerTalk 的后端代码有 n 年没改动了 ,Java 稳如老狗,k8s 上的 docker 连续跑了 1 年多都没故障重启过(7h 那个是今天调试更新),花时间一直没有动力升级。
新项目大多数用 hono + drizzle + lambda 的技术栈了,想着借助 AI 的能力把 Java 给迁移了,也是几天的技术验证,效果非常好。效果 ⬇️
Java Spring Boot: 16461 lines
- monster: 7618
- model: 3620
- channel: 2056
- notification: 1847
- websocket: 637
- gateway: 683
Nodejs: 5486 lines
- api: 4697
- notification: 789
代码量为原来的 1/3,打包后的体积 500kb 左右,使用 AWS CDK 进行部署,40 秒就能上线一个版本,更新速度非常快。
大部份简单的 API 延迟性能没有变化(语言影响不大,主要在 db 和网络上),部份 API 重构后更加轻量,延迟降低 50-100ms。
语言迁移的原因
Java + Spring Boot 确实很好用,而且非常稳定,各种后端方案都能找到,AWS、GCP、阿里云之类的云厂商也会优先发布 Java SDK,版本质量和功能完善程度都会比其他语言的 SDK 好。
但随着 AI 发展和 Serverless 技术成熟,产品迭代的速度要更快,hono + drizzle 的出现让我觉得 ts 后端非常有戏,bun 也让我看到 js 性能是没问题的,积累一整套的 SDK 代码替代 Spring Boot 大部分常用功能。
- ts 的类型系统无敌,可以解决 Java NPE 问题。
- monorepo 管理方便,前后端可以共享大量代码。
- AWS CDK + Lambda 管理方便,上线速度超快。
- 几乎所有需要常驻的场景都有 Lambda 的方案轻量替代。
- ts 做营销方便,能够找到各种库,比如 react-email 邮件营销。
- 2025 各个云厂商的 js SDK 已经很成熟。
这些点积累下来与其说 Java 不行,不如说 js/ts 的生态太强,在未来要吃掉很大部份的后端开发,优势不止相对于 java,像 go/rust 也很难赶上 ts 的优点。
可能的问题
我用 ts 实现了一套兼容 spring sercurity 的 session 管理机制,切换到 ts 后端后可能有部份用户需要重新登录,如果有其他意外情况,欢迎评论反馈,谢谢。
大佬太强了。