JNet

极简、高性能、零依赖的 HTTP 客户端

JDK 11+ 原生
零依赖
HTTP/2 & SSE
500+ 行核心
- GitHub Stars
- Forks
- Open Issues
500+ 核心代码行

✨ 核心特性

🚀 本期亮点

GitHub Actions 自动化发布
📦 Maven 动态版本管理
🎯 Fat Jar 一键执行
🎨 现代化 GitHub Pages
极致性能
基于 JDK 11+ 原生 HttpClient,复用连接池,内存占用比 OkHttp 低 60-70%
🎯
Python 风格 API
直观简洁的静态方法调用,一行代码完成 HTTP 请求
🔒
线程安全
不可变对象设计,无锁化架构,完美支持并发场景
🔌
拦截器链
类 OkHttp 拦截器机制,支持认证、日志、重试等扩展
📡
SSE 流式支持
真正的非阻塞 Server-Sent Events,实时数据推送
📦
零依赖
仅使用 JDK 标准库,无任何第三方 JAR 包

💻 代码示例

// 1. 基础 GET - 就像 Python requests! String data = JNet.get("https://api.example.com/data"); // 2. 带参数 POST JSON String result = JNet.post("https://api.example.com/users", JNet.json().put("name", "Alice").put("age", 25)); // 3. 自定义客户端 + 拦截器 JNetClient client = JNetClient.newBuilder() .connectTimeout(5000) .addInterceptor(new Interceptor.LoggingInterceptor()) .build(); // 4. 异步请求 CompletableFuture<String> future = JNet.getAsync("https://api.example.com"); future.thenAccept(data -> System.out.println(data)); // 5. SSE 实时流 SSEClient sse = new SSEClient(); sse.connect("https://api.example.com/events", new SSEClient.SSEListener() { public void onData(String data) { System.out.println("Event: " + data); } });

📊 性能对比

Apple M1, 16GB RAM, JDK 17 - 100Mbps 网络

特性 JNet OkHttp Apache HttpClient JDK HttpClient
依赖数量 0 3+ 5+ 0
代码行数 ~500 ~30k ~50k N/A
HTTP/2
拦截器
SSE 支持
内存占用 (1000并发) 12-18 MB 40-60 MB 80+ MB 20-30 MB
学习曲线 平缓 中等 陡峭 陡峭

🏗️ 架构设计

清晰的分层架构,多种设计模式应用

JNet (静态工具类) JNetClient (单例客户端) Request (不可变对象) Call (调用器) Response (响应对象)
建造者模式 单例模式 责任链模式 策略模式 不可变对象 模板方法

📝 版本更新

v3.4.5 2024-12-31

✨ 新增功能

  • GitHub Actions 自动化发布流程
  • Maven 动态版本管理支持
  • GitHub Packages 自动发布
  • Fat Jar 生成和执行工具

🔧 改进

  • 优化 pom.xml 配置,移除冗余插件
  • 全新 README.md 和架构文档
  • 现代化 GitHub Pages 展示

🐛 修复

  • 修复 GitHub Packages 认证问题
  • 修复 Release 创建权限问题
📋 查看完整 Release

🚀 准备好开始了吗?

只需一行代码,即可享受极简、高性能的 HTTP 客户端