🏗️ 系统架构
June 1, 2026 · View on GitHub
架构概览
EasyPostman
├── 🎨 用户界面层 (UI Layer)
│ ├── Workspace 工作区管理
│ ├── Collections 接口集合管理
│ ├── Environments 环境变量配置
│ ├── History 请求历史记录
│ ├── Performance 性能测试模块
│ └── NetworkLog 网络请求监控
├── 🔧 业务逻辑层 (Business Layer)
│ ├── HTTP 请求处理引擎
│ ├── 工作区切换与隔离引擎
│ ├── Git 版本控制引擎
│ ├── 环境变量解析器
│ ├── 脚本执行引擎
│ ├── 数据导入导出模块
│ └── 性能测试执行器
├── 💾 数据访问层 (Data Layer)
│ ├── 工作区存储管理
│ ├── 本地文件存储
│ ├── Git 仓库管理
│ ├── 配置管理
│ └── 历史记录管理
└── 🌐 网络通信层 (Network Layer)
├── HTTP/HTTPS 客户端
├── WebSocket 客户端
├── SSE 客户端
└── Git 远程仓库通信
🛠️ 技术选型说明
核心技术栈
-
Java 17: 使用最新 LTS 版本,享受现代 Java 特性
- Records、Sealed Classes、Pattern Matching
- 增强的 NullPointerException 消息
- Text Blocks 更好的字符串处理
-
JavaSwing: 原生桌面 GUI 框架
- 跨平台兼容性(Windows、macOS、Linux)
- 原生外观和感觉
- 无浏览器开销
-
jlink & jpackage: 官方打包工具
- 创建自定义运行时镜像
- 生成原生安装包(DMG、EXE、DEB)
- 减少分发大小
UI 组件库
-
FlatLaf: 现代化 UI 主题
- 支持暗色和亮色模式
- 支持 HiDPI/Retina 显示
- 原生 macOS 样式
- 可自定义配色方案
-
RSyntaxTextArea: 语法高亮文本编辑器
- 支持 JSON、XML、JavaScript、HTML 等
- 代码折叠
- 自动完成
- 搜索和替换
-
jIconFont-Swing: 矢量图标字体支持
- FontAwesome 集成
- 可缩放图标
- 主题感知着色
-
SwingX: 扩展 Swing 组件库
- 增强的表格和树
- 日期选择器
- 搜索面板
-
MigLayout: 强大的布局管理器
- 灵活直观
- 支持响应式设计
- 跨平台一致性
网络与通信
-
OkHttp: 高性能 HTTP 客户端
- HTTP/2 支持
- 连接池
- 透明 GZIP 压缩
- 响应缓存
- 拦截器支持
-
WebSocket 支持: 实时通信
- 全双工通信
- 消息分帧
- Ping/Pong 心跳
-
SSE (Server-Sent Events): 服务器推送支持
- 事件流解析
- 自动重连
- 事件 ID 跟踪
脚本引擎
-
GraalVM JavaScript:用于前置/后置脚本的嵌入式脚本运行时
- ECMAScript 5.1 支持
- Java 互操作性
-
GraalVM JavaScript (Java 17+): 现代 JavaScript 引擎
- ECMAScript 2021+ 支持
- 更好的性能
- 多语言支持
数据与存储
-
JSON 处理:
- Gson: JSON 序列化/反序列化
- Jackson: 备选 JSON 处理器
-
XML 处理:
- 内置 Java XML API
- XPath 支持
-
文件存储:
- 接口集合的本地 JSON 文件
- 环境变量文件
- Git 仓库集成
版本控制
- JGit: 纯 Java Git 实现
- Clone、commit、push、pull 操作
- 分支管理
- 冲突检测
- SSH 和 HTTPS 认证
日志记录
- SLF4J + Logback: 日志框架
- 灵活配置
- 多种输出方式(控制台、文件、滚动)
- 性能优化
- 异步日志支持
📦 构建与打包
构建工具
- Maven: 项目管理和构建自动化
- 依赖管理
- 插件生态系统
- 多模块支持
打包策略
-
跨平台 JAR:
mvn clean package- 生成
easy-postman-{版本号}.jar - 需要 Java 17+ 运行时
- 最小的分发大小
- 生成
-
原生安装包:
- macOS DMG: 使用
jpackage自定义图标和背景 - Windows EXE: Inno Setup 安装程序带快捷方式
- Windows 便携版 ZIP: 解压即用,无需安装
- Linux DEB: Debian 软件包带桌面集成
- macOS DMG: 使用
-
自定义运行时:
- 使用
jlink创建最小化 JRE - 仅包含所需模块
- 减少约 50% 的分发大小
- 使用
推荐的开发 JDK
💡 推荐使用 JetBrains Runtime (JBR) 获得最佳 Swing 性能:
- 所有平台上更好的字体渲染
- 改进的 HiDPI 支持
- Swing 特定的 bug 修复
- 为桌面应用优化的垃圾回收
🔧 开发工作流
项目结构
easy-postman/
├── src/main/java/ # Java 源代码
│ └── com/laker/postman/
│ ├── ui/ # UI 组件
│ ├── service/ # 业务逻辑
│ ├── model/ # 数据模型
│ ├── network/ # 网络层
│ └── utils/ # 工具类
├── src/main/resources/ # 资源文件
│ ├── icons/ # 应用图标
│ ├── themes/ # FlatLaf 主题
│ ├── js-libs/ # JavaScript 库
│ └── messages*.properties # 国际化文件
├── build/ # 构建脚本
│ ├── mac.sh # macOS 打包
│ ├── win-exe.bat # Windows 安装程序
│ └── linux-deb.sh # Linux DEB 打包
└── docs/ # 文档
测试
- 单元测试: JUnit 5
- 集成测试: TestNG
- UI 测试: 不同主题和分辨率的手动测试
🚀 性能优化
UI 渲染
- 大型集合的延迟加载
- 历史记录的虚拟滚动
- 防抖搜索和过滤
- 复杂组件的离屏渲染
网络
- 使用 OkHttp 的连接池
- 请求取消支持
- 流式响应处理
- Gzip 压缩
内存管理
- 缓存使用弱引用
- 限制历史记录保留
- 响应大小限制
- 垃圾回收调优
启动时间
- 组件的延迟初始化
- 并行资源加载
- 优化的依赖图
- GraalVM AOT 编译(未来)
🔒 安全考虑
- 本地存储: 所有数据本地存储,无云同步
- 无遥测: 无跟踪或分析
- 证书验证: 正确的 SSL/TLS 验证
- 凭证存储: Git 凭证的安全存储
- 脚本沙箱: JavaScript 在沙箱环境中执行
- 输入验证: 防止注入攻击
🌐 跨平台兼容性
Windows
- 原生外观和感觉
- 文件关联
- 注册表集成
- 自动更新支持
macOS
- 原生菜单栏集成
- Touch Bar 支持(未来)
- 沙箱兼容
- 公证以确保安全
Linux
- 桌面文件集成
- 系统托盘支持
- 多种桌面环境(GNOME、KDE、XFCE)
- AppImage 支持(未来)
📈 未来增强
- 🚧 插件系统以实现可扩展性
- 🚧 GraphQL 支持
- 🚧 gRPC 协议支持
- 🚧 Mock 服务器功能
- 🚧 API 文档生成
- 🚧 云工作区同步(可选)
- 🚧 移动端配套应用