Apache Johnzon 2.2.0 介绍与选型指南
Apache Johnzon 2.2.0 的信息基准、模块架构、功能特性、官方快速上手与适用限制,及对 Jackson、Gson、JSON-java 的量化选型对比。
Apache Johnzon 2.2.0 介绍与选型指南
一、信息基准
1.1 查询说明
本文为 Apache Johnzon 的认知篇文档,仅基于官方公开资料进行整理与溯源,不涉及本地安装与实测。所有版本信息与对比数据的查询日期均为 2026-10-18。
1.2 官方来源清单
| 来源 | 地址 | 用途 |
|---|---|---|
| Johnzon 官网 | https://johnzon.apache.org/ | 项目主页、规范符合度与 Mapper 示例 |
| 官网下载页 | https://johnzon.apache.org/download.html | 版本说明与命名空间变更说明 |
| 官方下载目录 | https://downloads.apache.org/johnzon/ | 发布物核实 |
| GitHub Releases | https://github.com/apache/johnzon/releases | 发布记录 |
| Maven Central 元数据 | https://repo1.maven.org/maven2/org/apache/johnzon/johnzon-core/maven-metadata.xml | 版本交叉取证 |
1.3 版本依据
| 取证渠道 | 结果 |
|---|---|
| GitHub Releases Atom feed | 最新条目 v2.2.0(条目时间 2026-08-05);v1.3.1 条目更新于 2026-08-14,为 1.x 维护线 |
| downloads.apache.org/johnzon/ | 提供 johnzon-2.2.0 与 johnzon-1.3.1 两个发布目录 |
| Maven Central(johnzon-core 元数据) | latest/release 均为 2.2.0 |
| 结论 | 截至 2026-10-18,官方最新稳定版为 2.2.0;1.3.1 为 javax 兼容维护线 |
二、软件概述
2.1 项目简介
本文介绍的版本为 Apache Johnzon 2.2.0。Johnzon 是 Apache 软件基金会旗下纯 Java 实现的 JSON 处理库,官方声明其完整实现 Jakarta JSON Processing(JSON-P)2.1 与 JSON Binding(JSON-B)3.0 规范,同时提供自有的 Mapper 模块实现对象与 JSON 的映射。2.x 系列将 API 命名空间从 javax 迁移至 jakarta,官方下载页明确说明该版本与 1.x 不向后兼容;1.3.1 维护线对应 JavaEE 7 层级的 javax 体系,供存量系统延续使用。
2.2 基本信息
| 条目 | 内容 |
|---|---|
| 软件名称 | Apache Johnzon |
| 本次介绍版本 | 2.2.0(GitHub 条目时间 2026-08-05) |
| 开发语言 | Java |
| 开源许可 | Apache License 2.0 |
| 代码托管 | https://github.com/apache/johnzon |
| 规范符合度 | Jakarta JSON-P 2.1、Jakarta JSON-B 3.0(官网声明) |
| 归属组织 | Apache Software Foundation |
三、核心架构
3.1 模块划分
官网文档描述的核心模块如下:
- johnzon-core:流式解析与生成的核心实现,官网声明其为默认符合 JSON-P 规范的实现(2.0.x 起默认严格合规);
- johnzon-mapper:对象与 JSON 的映射模块,基于注解配置访问策略(AccessMode),支持与任意 IoC 框架集成;
- johnzon-jsonb:在 Mapper 之上实现 JSON-B 标准 API,官网声明其完全复用 JSON-B 作为编程接口。
3.2 双层 API 设计
- 标准层:面向 jakarta.json 与 jakarta.json.bind 标准 API 编程,可在不同实现间移植;
- 原生层:直接使用 Mapper API 获得更细粒度的映射控制;
- 官网同时提示:Jakarta JSON-P API 的默认依赖绑定 parsson 作为底层实现,使用时需按官方说明处理依赖关系。
四、功能特性
- 双规范实现:同一构件族内同时提供 Jakarta JSON-P 2.1 与 JSON-B 3.0 能力(官网声明);
- 对象映射:Mapper 支持注解驱动的读写映射,可定制属性访问模式;
- 流式处理:基于 core 的流式解析/生成,适合大文档与高吞吐场景;
- 可插拔配置:Mapper 提供丰富的构建期配置项,可集成外部 IoC 框架;
- 维护线清晰:2.x(jakarta)与 1.x(javax/JavaEE 7 层级)双线并存,便于渐进迁移;
- ASF 治理:Apache License 2.0,无商业授权风险。
五、快速上手
5.1 引入依赖
按官方文档,2.2.0 使用 jakarta 命名空间;典型做法是引入 johnzon-jsonb(含 core 与 mapper),或仅引入 johnzon-core 使用 JSON-P API(坐标 org.apache.johnzon,版本 2.2.0,可从 Maven Central 获取)。
5.2 Mapper 最小示例(引自官网首页)
官方首页(https://johnzon.apache.org/)给出的 Mapper 用法结构如下:
final MySuperObject object = createObject();
final Mapper mapper = new MapperBuilder().build();
mapper.writeObject(object, outputStream);
final MySuperObject otherObject = mapper.readObject(inputStream, MySuperObject.class);
即通过 MapperBuilder 构建 Mapper 后,即可完成对象到 JSON 输出流的写出与从输入流读取还原。
5.3 官方来源说明
以上示例与模块说明均出自 Apache Johnzon 官网与其下载页,本文未做本地运行与输出编造。
六、适用场景与限制
6.1 适用场景
- Jakarta EE 10 及以上、已迁移到 jakarta 命名空间的应用(如新版本应用服务器环境)的 JSON 处理;
- 需要标准 JSON-P/JSON-B 实现且希望保持 Apache 许可纯净度的项目;
- 需要注解驱动对象映射又不希望引入重型框架的 Java 服务;
- 从 1.x(javax)逐步迁移的存量系统:先以 1.3.1 维持,再切 2.x。
6.2 限制与注意
- 2.x 与 1.x 不向后兼容(命名空间 javax 迁移至 jakarta,官方下载页明确声明),升级是破坏性变更;
- 社区规模较小(GitHub stars 约 57),生态示例与第三方资料少于 Jackson、Gson;
- 若项目仍在 JavaEE 7 层级的 javax 环境,应使用 1.3.1 维护线而非 2.x;
- 高级定制(性能调优、扩展序列化)文档相对精简,部分能力需阅读源码。
七、同类选型对比
7.1 候选与量化数据总表
| 软件 | 开源许可 | GitHub stars / 最近发版 | 版本节奏 | 兼容矩阵 |
|---|---|---|---|---|
| Apache Johnzon 2.2.0 | Apache-2.0 | 57 stars / 2.2.0(2026-08-05) | 2.x 与 1.x 双线维护 | Jakarta JSON-P 2.1、JSON-B 3.0,jakarta 命名空间 |
| Jackson(jackson-core 2.22.4) | Apache-2.0(仓库标签) | 2,379 stars(jackson-core 仓库)/ 2.22.4(Maven Central) | 高频小步发版 | 自有流式 API + JSON-B 实现模块,javax/jakarta 兼容模块并存 |
| Gson(gson-parent 2.14.0) | Apache-2.0(仓库标签) | 24,237 stars / gson-parent-2.14.0(releases/latest 重定向) | 持续迭代 | Java 8+,无注解亦可映射 |
| JSON-java 20260814 | 官方仓库未标注 SPDX 许可标签 | 4,722 stars / 20260814(Maven Central 与 releases/latest 一致) | 以日期为版本号,持续发版 | 极简 API,无外部依赖 |
注:stars 数据取自各项目 GitHub 仓库页面(2026-10-18 抓取);jackson-core 与 JSON-java 版本取自 Maven Central 元数据,Gson 版本取自 GitHub releases/latest 重定向;Jackson stars 统计其流式核心仓库 jackson-core。
7.2 差异分析
- 标准符合度:Johnzon 与 Jackson 均提供 JSON-P/JSON-B 实现,Johnzon 以双规范一站式为卖点,Gson 与 JSON-java 走自有轻量 API 路线;
- 生态规模:Jackson 是 Java 生态事实标准,模块生态最全;Gson 胜在简单易用与庞大用户基数;Johnzon 社区最小但治理透明;
- 场景适配:Jakarta EE 10+ 新项目选 Johnzon 可获得原生 jakarta 规范实现;遗留 javax 环境应选各库的兼容线;
- 性能定位:JSON-java 最轻但功能最少;Jackson 流式性能与扩展点最丰富;Johnzon 与 Gson 处于中间地带。
7.3 选型建议
Jakarta EE 10+ 或 Spring Boot 3 级别的 jakarta 环境中需要标准 JSON-B/JSON-P 实现时选 Apache Johnzon 2.2.0;若更看重生态成熟度与扩展模块则选 Jackson,追求极简可用选 Gson 或 JSON-java。
八、参考链接
- 项目官网:https://johnzon.apache.org/
- 官网下载页:https://johnzon.apache.org/download.html
- 官方下载目录:https://downloads.apache.org/johnzon/
- GitHub 仓库:https://github.com/apache/johnzon
- GitHub Releases:https://github.com/apache/johnzon/releases
- Maven Central 元数据:https://repo1.maven.org/maven2/org/apache/johnzon/johnzon-core/maven-metadata.xml
- 对比项目:https://github.com/FasterXML/jackson-core 、https://github.com/google/gson 、https://github.com/stleary/JSON-java