先给第一次了解 Feat 的朋友一句话介绍:
Feat 是一款国产 Java Web 框架,开发体验近似 Spring Boot,运行速度远超 Vert.x
集成自研 smart-socket 引擎,支持 HTTP/2、WebSocket,编译期生成代码零反射,启动快、内存小、吞吐量高。

前段时间我们发了篇文章《Spring Boot 内嵌 Tomcat,是进步还是退步?》,评论区那叫一个热闹。
有人说 Spring Boot 太重了,有人说 Tomcat 已经够用了,还有人认为包体积轻不轻量化无所谓,性能才是硬道理。
好,那今天咱们就聊点硬核的——Feat v2.2.0 正式发布,看看 smart-servlet 的 web 内核在性能上到底能有多刚。
一、这次最狠的更新:我们把 Servlet 的"义肢"给拆了

先划重点,这条更新比其他所有功能加起来都重要:
ReadListener 和 WriteListener 标记为已弃用,该功能仅用于适配 Jakarta Servlet 规范。
如果你看过我之前写的《Servlet 的三宗罪:Spring 的崛起,可能就是被它逼出来的》,应该对这段话有印象:
"Servlet 的线程模型从骨子里就是'一个请求,一个线程',AsyncContext 只是想办法把容器线程提前释放出去,但编程模型依然是笨重的回调式……ReadListener / WriteListener 更典型——一种'轮询式异步',每次写之前都要先问一句'我现在能写吗',这种设计放在 2014 年看都已经显得落后于时代。"
现在,我们在 Feat 里把它正式标记为 Deprecated。
这不是为了标新立异。而是我们越来越确定一件事:一个规范如果连自己的官方生态都不愿意用(Spring WebFlux 直接绕开 Servlet API 另起炉灶),那它留着的唯一意义,可能就是给后来者提个醒——该删了。
Feat 从设计之初就不是 Servlet 的模仿者。我们保留这些接口,只是为了给迁移中的项目一个缓冲。但"兼容"不等于"认同",该画的线终究要画。
二、其他值得关注的更新

HTTP 客户端增强
- • 新增
HttpOptions#maxConnections,支持配置 HTTP 连接池最大连接数
- • 优化 HTTP 客户端长连接判定逻辑
HTTP/2 优化
Server 稳定性
Feat Cloud / AOT
- • 支持
feat.yml / feat-{env}.yml 多环境配置生成(社区用户强烈反馈的需求,终于安排上了!)
底层升级
三、性能测试:Feat 把 Vert.x 按在地上摩擦
好了,最激动人心的部分来了。
我们拿 Feat、Vert.x 和 Spring Boot 三个框架做了横向对比,测试工具用的 wrk,场景是 Hello World 和 JSON 响应。
测试参数:4 线程,100 连接,持续 60 秒,开启延迟统计。

| 测试场景 |
Feat |
Vert.x |
Spring Boot |
| Hello World 吞吐 |
155,939 RPS |
82,268 RPS |
49,905 RPS |
| Hello World 延迟 |
0.79 ms |
1.43 ms |
3.60 ms |
| JSON 响应吞吐 |
155,973 RPS |
77,212 RPS |
44,617 RPS |
| JSON 响应延迟 |
0.82 ms |
1.54 ms |
2.27 ms |
Feat 的吞吐量约为 Vert.x 的 2 倍。
你没看错,是两倍。延迟更是低得离谱——Hello World 场景下只有 0.79ms,连 1 毫秒都不到。
测试代码全部开源在 Feat 仓库,测试环境为 GitHub Actions,欢迎复现。
快速开始
使用 Feat Cloud 创建一个简单的注解式 Web 应用:
import tech.smartboot.feat.cloud.FeatCloud;
import tech.smartboot.feat.cloud.annotation.Controller;
import tech.smartboot.feat.cloud.annotation.RequestMapping;
@Controller
public class HelloWorld {
@RequestMapping("/hello")
public String hello() {
return "Hello, World!";
}
public static void main(String[] args) {
FeatCloud.cloudServer().listen();
}
}
Maven 依赖:
<!-- 运行期依赖 -->
<dependency>
<groupId>tech.smartboot.feat</groupId>
<artifactId>feat-cloud</artifactId>
<version>2.2.0</version>
</dependency>
<!-- 编译期转码 -->
<dependency>
<groupId>tech.smartboot.feat</groupId>
<artifactId>feat-cloud-starter</artifactId>
<version>2.2.0</version>
<scope>provided</scope>
</dependency>
写在最后
Feat 从诞生到今天,并不是为了证明某个框架不好。

我们真正想回答的是另一个问题:
如果今天重新设计一套 Java Web 框架,它应该是什么样子?
我们的答案是:
- 保留 Spring Boot 那样成熟、易用的开发体验;
- 不再依赖 Servlet 的历史设计;
- 尽可能把工作放到编译期完成,而不是运行期;
- 用更少的资源,支撑更高的性能。
这也是 Feat 一直坚持的发展方向。
v2.2.0 并不是终点,而是这个方向上的又一步。
如果你正在寻找一种不同于传统 Servlet 架构的 Java Web 开发方式,欢迎体验 Feat,也欢迎提出 Issue、参与 PR,一起把它做得更完善。
GitHub 地址:https://github.com/smartboot/feat
官方文档:https://smartboot.tech/feat