JQuick
轻量级 Java 开源框架集合 —— 纯 Java 实现、零重依赖、声明式优先,覆盖 HTTP 请求、PDF 报表、JSON 路径、规则引擎、SQL 与 Excel。
项目介绍
JQuick 是一套面向企业级 Java 应用的轻量级开源框架集合。所有模块坚持纯 Java 实现、零重依赖与声明式优先,可独立引入,也可嵌入到既有系统中按需使用。
- 纯 Java 实现核心模块不依赖 JNI,可在 Windows / Linux / macOS 及信创操作系统(麒麟、统信 UOS、openEuler)上无差别运行。
- 零重依赖每个模块都可以单独引入,不与 Spring 等重型容器绑定,没有运行时代理与额外中间件。
- 声明式优先用 XML / 注解 / DSL 描述规则与请求,业务代码与配置解耦,改配置即可调整行为。
架构总览
JQuick 的模块按职责分为四层:下层提供运行时与数据能力,上层直接面向业务代码。每个模块都可以单独引入,也可以沿数据流向组合起来,解决一整条链路的问题。
一条典型的数据链路
数据层的几个模块串起来,就是一套不搬迁数据的轻量 ETL。比如把 MySQL 里的订单表加工成对账报表:连接器负责取数,数据集负责承载,SQL 负责查询关联,转换函数负责清洗,最后导出成 Excel 或 PDF。
- 接入JQuick-ConnectorJDBC、CSV、Excel、JSON、Redis、HTTP 等 22 种数据源,统一读成内存数据集。
- 承载JQuickDataSet列元数据加行数据,支持过滤、排序、分页、分组聚合与表连接。
- 查询JQuick-Sql把数据集注册为表,用标准 SQL 做过滤、聚合与多表关联。
- 加工JQuick-Transform259 个内置函数,做类型转换、码值翻译与脱敏,可直接写在 SQL 里调用。
- 产出JQuick-Excel · JQuick-Pdf数据集 toMapList() 后导出工作簿,或按 HTML 模板渲染成 PDF。
整条链路在同一个 JVM 进程内完成,没有中间件,也不需要先把数据灌进另一套库。
生态项目
点击卡片进入对应模块的文档;标记为「文档建设中」的项目可先到 GitHub 组织主页查看源码与示例。
- JQuick-Curl原生 curl 风格的 HTTP 客户端:用 curl 命令描述请求,用 Java 方法直接调用。
- JQuick-Pdf纯 Java PDF 工具包:HTML/CSS 风格模板 + 30 余种矢量图表,无需浏览器与 WebKit。
- JQuick-PathJSON 的 XPath:用路径表达式从任意嵌套 JSON 中定位、过滤并映射为 Java Bean。
- JQuick-Java类 Java 的轻量脚本语言与规则引擎,规则以 XML / 内联脚本声明,可在运行时热调整。
- JQuick-SqlSQL 解析为 AST、逻辑改写与嵌入式执行引擎,解析、审计、动态拼装一站完成。
- JQuick-Excel声明式 xls/xlsx 导入导出:映射、校验、公式、样式、图表与页脚全部由 DSL 描述。
- JQuick-Connector把数据库、文件、缓存与 HTTP 接口查询成一张内存数据集,类 SQL 语法统一接入。
- JQuick-Transform生态通用数据转换函数库:200+ 内置函数 + 原生 SPI 扩展,可直接嵌入 SQL 与 Excel 导入导出。
- JQuick-AsmJQuick 生态模块,文档正在整理中,源码与说明请见 GitHub 组织主页。
- JQuick-GrpcJQuick 生态模块,文档正在整理中,源码与说明请见 GitHub 组织主页。
快速开始
以 JQuick-Curl 为例:引入依赖后即可用 curl 命令描述请求,并以 Java 方法调用。其他模块只需把 artifactId 换成 jquick-pdf、jquick-sql、jquick-excel 等即可。
<dependency> <groupId>io.github.paohaijiao</groupId> <artifactId>jquick-curl</artifactId> <version>2.6.0</version></dependency>implementation 'io.github.paohaijiao:jquick-curl:2.6.0'import com.github.paohaijiao.anno.JCurlCommand;import com.github.paohaijiao.domain.req.JQuickCurlReq;import com.github.paohaijiao.executor.JCurlInvoker;
public interface UserApi {
@JCurlCommand("curl -X GET https://httpbin.org/get") String list(JQuickCurlReq request);}
public class Demo {
public static void main(String[] args) throws Exception { UserApi api = JCurlInvoker.createProxy(UserApi.class); System.out.println(api.list(new JQuickCurlReq())); }}联系作者
使用交流、问题反馈与商务合作都可以通过下面的方式联系;也欢迎直接到 GitHub 提 Issue。
- WhatsApp+60 11-6236 6686 打开 WhatsApp
- 邮箱[email protected]发送邮件
- 微信公众号
扫码关注公众号,获取版本更新与使用技巧 - 作者微信
扫码添加作者微信,交流使用与定制