这个项目一直是个人在使用,选择开源没有什么动机理由,就是想开源了,如果非要说一个,那就是它多少弥补了国产 Java 自研 HTTP/2 框架这块空白——放眼国产 Java 生态,能拿出手的 HTTP/2 网络框架,要么闭源,要么底层建立在 Netty 之上,真正自研的 Java 实现几乎没有。
wastnet 是一款完全自研、零第三方依赖的轻量级 Java 网络应用框架,核心基于 JDK 原生 NIO 构建 Reactor 多路复用模型,不依赖 Netty、Tomcat 等任何第三方网络库。其 HTTP/2 协议栈从 HPACK、Huffman 到 ALPN 均为自主实现,在基准测试中与 Undertow 正面对比,性能不落下风。
核心特性
- 完全自研协议栈:HTTP/1.1 与 HTTP/2 协议栈均为自主实现,包含 HPACK 头部压缩、Huffman 编码、ALPN 协商等完整能力,不借助任何外部实现。
- Reactor 多路复用:基于 NIO 的多线程 Reactor 模型,支撑高并发连接与低延迟吞吐。
- 零依赖:仅依赖 JDK 本身,无传递依赖,避免依赖冲突与体积膨胀。
- SSL/TLS 直载:支持直接加载 PEM 格式证书,无需额外密钥库转换。
- WebSocket / SSE:原生支持 WebSocket 全双工通信与 Server-Sent Events 服务端推送。
HTTP 能力
| 能力 |
支持情况 |
| HTTP/1.1 |
完整支持 GET/POST/PUT/DELETE/PATCH、Pipeline、Keep-Alive、SSE |
| HTTP/2(h2 / h2c) |
HPACK 头部压缩、Huffman 编码、流控、多路复用、ALPN 协商 |
| HTTPS / TLS |
支持,PEM 直载(无需 keytool 转换) |
| 103 Early Hints |
静态资源预加载提示(RFC 8297),H1/H2 双协议支持 |
| 路由分发 |
精确匹配、前缀匹配、正则匹配、HTTP 方法过滤 |
| 注解路由(MVC) |
@Controller / @Endpoint 注解路由 + 轻量依赖注入 |
| 反向代理 |
URL 重写、Header 变量、H2→H1 协议转换 |
| WebSocket |
帧编解码、文本/二进制/Ping-Pong/分片帧 |
| 静态资源 |
零拷贝发送、ETag/Last-Modified 缓存、GZIP 流式压缩 |
| 文件上传 |
Multipart/Form-Data 解析、流式 body 读取 |
安全特性
- SSL/TLS 加密传输(JKS / PEM 证书格式)
- PEM 证书直接加载(无需 keytool 转换)
- 路径穿越防护(
.. 检测)
- HTTP 方法白名单(静态资源默认仅允许 GET)
- 请求大小限制(URI 长度、Header 大小、Body 大小)
- 连接超时检测(空闲连接自动关闭)
- ALPN 协议协商(h2, http/1.1)
- 连接过滤 —— TCP accept 级黑/白名单、IP 限流(
ConnectionFilter)
- Origin 校验 —— WebSocket 握手 Origin 白名单(CSWSH 防护,
allowedOrigins)
Maven 引入
<dependency>
<groupId>io.github.wycst</groupId>
<artifactId>wastnet-core</artifactId>
<version>1.0.1</version>
</dependency>
Java 示例
import io.github.wycst.wastnet.http.HttpHeaderValues;
import io.github.wycst.wastnet.http.HTTPServer;
public class QuickStart {
public static void main(String[] args) throws Exception {
HTTPServer.of(8080)
.requestHandler((request, response) ->
response.contentType(HttpHeaderValues.TEXT_PLAIN_UTF8)
.body("Hello wastnet"))
.start();
}
}
相关链接
- Gitee:https://gitee.com/xiaoch0209/wastnet
- GitHub:https://github.com/wycst02/wastnet
- 协议:Apache License 2.0
wastnet 基于 Apache 2.0 协议完全开源、免费使用,欢迎体验与反馈。