每周都有人问Floci创始人同一个问题:为什么用Java开发?为什么不像LocalStack那样选Go、Rust或Python?

答案很简单:不是人选了语言,是约束条件选了语言。

打开网易新闻 查看精彩图片

在写第一行代码之前,Floci必须满足五个硬性指标:冷启动24毫秒、空闲时内存占用极小,否则CI流水线会直接跳过;单个静态链接二进制文件,打包进约90MB的镜像,不带解释器、无需运行时安装;真正的并发能力,同时要处理SQS长轮询、Lambda容器、RDS代理、DynamoDB流;最后,代码必须能被非创始人的贡献者长期维护。

打开网易新闻 查看精彩图片

这五个条件一出,大部分语言已经被淘汰,个人偏好根本来不及进场。

很多人对Java的印象还停留在2015年的Spring Boot。但从Java 8到Java 25(当前LTS版本),这门语言已经脱胎换骨。虚拟线程(Java 21引入,Java 25成熟)带来数百万轻量级线程,无需再调线程池。对一个要同时模拟SQS轮询、Lambda调用和数据库代理的仿真器来说,这是质变。

Records、密封类、模式匹配把原本30行的样板代码压到1行。建模AWS的请求/响应类型从苦差变成顺手的事。文本块、switch表达式、var关键字让代码读起来像现代语言,而非1995年的文物。Java 25的紧凑对象头带来8-12%的内存节省,零成本。启动更快、 footprint 更小——类数据共享、提前分析、分代ZGC,2026年的JVM已是另一物种。

Java没停步,只是生态不再谈论它。

打开网易新闻 查看精彩图片

真正的杀招是Quarkus加GraalVM的组合。Quarkus彻底改了运行时模型:编译时做完传统Java启动时才做的事。反射、类路径扫描、依赖注入,全在编译期解决,而非容器启动时。

GraalVM随后把这套预编译好的应用转成原生二进制。具体收益:运行时没有JVM,没有类加载器,没有预热,没有首次请求的JIT停顿——二进制本身就是运行时。冷启动24毫秒,对比典型JVM应用的1-3秒,快约100倍。空闲内存约13MB,对比JVM的数百MB,小10-30倍。Docker镜像约90MB,对比JRE基础镜像的250MB(加库后往往更大)。没有未编写运行时的CVE攻击面,没有捆绑的OpenSSL、Python解释器、Node——只有一个二进制文件。静态链接,可以在scratch或distroless基础镜像上运行。

这正是大多数人听到"Java"时漏掉的部分。Floci镜像里没有JVM,没有JVM,只有一个二进制。

Quarkus底下是历经十余年实战检验的栈:Netty做非阻塞I/O(gRPC、Cassandra和大部分Java网络世界的底层库),Vert.x...