Java基础、中级、高级、架构面试资料

JDK 28 自带 JSON API 了,Fastjson2 不是最快的了

JAVA herman 12浏览
公告:“业余草”微信公众号 AI 中转站提供免费体验,点击链接 https://unity2.ai/register?ref=3XTnndN2 进行访问,支持 Claude、ChatGPT、Gemini 等最新模型!关注业余草微信公众号,添加作者微信:xttblog2!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
【腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

Java 领域的 JSON 框架有点像进入了“战国时代”。JDK 28 自带了 JSON API,Fastjson 也另立门户搞了 Fastjson2,然后最近 Apache 的 Fory JSON 1.6 也强势发布了,再加上 Jackson、Gson 等框架,一下子就让 Java 在 JSON 处理方面有热闹起来了。

Fastjson2 重头开始,还是主打性能,但是在性能领域 Apache Fory 也带着 10 倍于 Jackson 的性能杀入了 JSON 赛道。JDK 28 已经要把 JSON 收编进标准库了,JSON 看起来成了兵家必争之地。接下来,我们就一起来看看 Java JSON api 和 Fory Json 要玩出什么花样!

Java 原生 JSON API

2026 年 7 月,OpenJDK 社区传来一个让 Java 开发者等待已久的消息,JEP 540: Simple JSON API 从草案(Draft)正式提升为候选(Candidate)状态,目标锁定 JDK 28。这意味着,Java 平台终于要在标准库里内置一套官方的 JSON 处理能力。

要知道,从 2014 年 JEP 198(轻量级 JSON API)被提出又撤回,到现在整整过去了十二年。十二年间,Java 开发者处理 JSON 几乎完全依赖第三方库,Jackson、Gson、FastJSON、JSON-P、JSON-B…… 没有一个属于 JDK 本身。

JEP 540 的核心定位

JEP 540 的设计哲学非常明确,它不是来取代 Jackson 或 Gson 的,而是填补 JDK 在基础 JSON 处理上的空白。

根据 JEP 540 的描述,这套 API 的目标是:

  • 严格遵循 RFC 8259,只提供解析和生成标准 JSON 的核心能力;
  • 低仪式感(low ceremony),让 Java 处理 JSON 像 Python、Go 一样简洁;
  • 聚焦常见任务:读配置文件、构造 JSON 载荷、检查 API 响应、修改 JSON 文档;
  • 显式排除数据绑定、流式处理、自定义序列化器等高级功能。

下面是一段来自于官方的示例代码。

import jdk.incubator.json.*;

// 解析 JSON
JsonValue json = Json.parse("""
    { "name": "Today", "temperature": 54 }
    """);

// 提取字段
int temp = json.get("temperature").asInt();

// 处理可选字段(不抛异常)
json.tryGet("humidity")
    .ifPresent(h -> System.out.println(h.asDouble()));

目前 JEP 540 以孵化器模块(jdk.incubator.json)的形式存在,需要在编译和运行时通过 --add-modules jdk.incubator.json 启用。虽然 API 还在演化中,但它释放了一个强烈信号,JSON 对于现代 Java 来说,已经从第三方生态问题变成了平台基础能力问题

Apache Fory JSON

就在 JEP 540 稳步推进的同时,Apache 基金会旗下的 Fory 项目在 2026 年 8 月扔下了一枚重磅炸弹,Fory JSON 1.6.0/1.6.1 正式发布。

如果大家关注过高性能序列化领域,应该对 Apache Fory 不陌生。这个 2024 年才进入 Apache 孵化器的项目,主打多语言高性能对象序列化,支持 Java、Python、Go、Rust、C++ 等语言,核心卖点是跨语言对象图序列化、循环引用支持、以及极致性能。

Fory JSON,则是 Fory 生态专门面向 Java 的 JSON 编解码器。它的出现,让 Java JSON 性能的天花板被直接顶破。

性能数据

这不是“快一点”,是“快一个数量级”。

文章配图参见我的公众号:https://mp.weixin.qq.com/s/qTeTSHwZs50CwxOBMETT8w

根据官方在 Apple M4 Pro + JDK 26.0.1 上的基准测试(单线程吞吐量)。

表示形式操作fory-jsonJacksonGson
String序列化7387465 ops/sec20493681084042
String反序列化2897955 ops/sec1074885902772
UTF-8 字节序列化10375498 ops/sec18686141037211
UTF-8 字节反序列化3077158 ops/sec1268397933079

Fory JSON 的 UTF-8 字节序列化吞吐量超过 1000 万 ops/sec,是 Jackson 的 5.5 倍,Gson 的 10 倍。在 1000KB 大载荷场景下,优势甚至扩大到 10 倍以上。

另一组来自 ej-technologies 的独立测试(200 个订单对象图,200 万次往返)也印证了这一点。

框架单次往返耗时总分配内存
Fory 1.63.5 µs4.5 GB
Kryo 5.68.9 µs4.2 GB
Jackson JSON28.7 µs8.8 GB
Java 原生序列化46.8 µs18.4 GB

Fory JSON 不仅比 Jackson 快 8 倍,内存分配也只有后者的一半。

为什么能这么快?

Fory JSON 的性能密码可以归纳为以下几点。

  1. 运行时代码生成(JIT Codegen):通过生成专用编解码器,避免反射开销;
  2. 最小化临时分配:优化原始类型写入,大量使用批量内存操作;
  3. 线程安全设计:单个 ForyJson 实例可跨线程复用,无需重复创建;
  4. 多平台支持:Java 8+、Android API 26+、GraalVM Native Image 全兼容。

Fory JSON 不是另一个 Jackson

这里需要澄清一个容易混淆的点,Fory JSON 和 Fory 的 Native/Xlang 二进制协议是完全不同的东西

Fory 的核心能力在于二进制对象图序列化(支持跨语言、循环引用、共享引用、多态等),而 Fory JSON 是专门用于需要与外部系统交换标准 JSON 的场景,比如 HTTP API、浏览器通信、日志、配置文件等。

换句话说,Fory JSON 的定位是,在必须输出/输入标准 JSON 的约束下,把性能压榨到极致

2026 年卷 JSON?

如果大家留意近两年的技术动态,会发现 JSON 相关的工具和框架呈现爆发态势。

  • JDK 28 准备内置 JEP 540 原生 JSON API;
  • Apache Fory 发布 1.6,用性能碾压姿态进入 JSON 赛道;
  • Jackson 持续迭代 3.x,仍是 Spring 生态事实标准;
  • Gson 虽然更新放缓,但在 Android 领域根基深厚;
  • FastJSON 2.x 在阿里系等场景下持续演进;
  • 各类 AI 框架(Spring AI、LangChain4j)把 JSON 作为与 LLM 交互的核心格式。

为什么 JSON 突然成了兵家必争之地?我想原因可能是来自于以下几点。

JSON 是 AI 时代的通用语

大模型 API(OpenAI、Claude、Gemini)的输入输出几乎都是 JSON。Function Calling、Tool Calling、Structured Output……这些 AI 应用的核心机制,底层全是 JSON 的序列化和反序列化。

Java 作为企业级后端的主力语言,每天处理的 JSON 数据量正在指数级增长。一个微服务集群在 AI 编排场景下,JSON 编解码的耗时很容易成为整体延迟的瓶颈。

云原生与可观测性驱动

Kubernetes、Prometheus、OpenTelemetry、各类云厂商 API……云原生生态几乎完全建立在 JSON 之上。配置文件是 JSON/YAML,指标上报是 JSON,链路追踪是 JSON。Java 应用越深地融入云原生,对 JSON 处理的性能要求就越高。

微服务间的通信

虽然 gRPC + Protobuf 在高性能 RPC 场景越来越流行,但服务间的边缘交互(BFF 层、网关聚合、前端通信)仍然大量使用 REST + JSON。这部分流量往往占据总请求量的 80% 以上,性能优化空间巨大。

Java 生态的标准库焦虑症

Python 有 json 模块,Go 有 encoding/json,JavaScript 原生支持 JSON …… 唯独 Java 这个企业级语言,处理最通用的数据格式竟然必须引入第三方依赖。JEP 540 的推进,某种程度上是 Java 社区对标准库完备性的一次补课。

JSOn 该怎么选?

面对即将到来的“三国杀”,Java 开发者该如何选择?

简单用 JDK 自带的

简单脚本、配置读取、快速原型推荐使用 JEP 540(JDK 28+)。

比如你只是需要解析一个配置文件、构造一个简单的 JSON 请求体、或者写个单文件脚本处理 API 响应,JEP 540 的原生 API 是最轻量的选择。无需引入任何依赖,几行代码就能搞定。

// JDK 28 未来可能的样子
JsonValue weather = Json.parse(responseBody);
double avg = weather.get("properties").get("periods").asList().stream()
    .mapToInt(j -> j.get("temperature").asInt())
    .average()
    .orElse(0);

但它的局限也很明显,没有数据绑定、不支持复杂对象映射、API 还在孵化器阶段可能变动。

高性能场景用 Fory JSON

面对高并发微服务、API 网关、AI 应用等高性能场景,推荐使用 Fory JSON。

比如你的系统对 JSON 性能敏感(QPS 过万、延迟要求亚毫秒级、内存敏感),或者运行在 GraalVM Native Image / Android 环境,Fory JSON 是目前的最优解。

// Fory JSON:线程安全,全局复用
private static final ForyJson JSON = ForyJson.builder().build();

User user = JSON.fromJson(requestBody, User.class);
String response = JSON.toJson(result);

Fory JSON 还支持安全控制(深度限制、类型禁止列表),对于处理不可信 JSON 输入(比如直接来自客户端或 LLM 的响应)非常有价值。

但是它的局限也比较显而易见。生态较新,Spring Boot 等框架的自动配置支持还在完善中;社区和文档丰富度不及 Jackson。

复杂对象映射用 Jackson

在企业级 Spring 应用、复杂对象映射方面,推荐使用 Jackson(长期主流),比较是 SpringBoot 等的默认支持类库。

Jackson 的生态位短期内无人能够撼动。Spring Boot 默认集成、海量的模块扩展(Java 8 Time、Kotlin、Joda-Time)、成熟的注解体系、以及十几年的社区积累,让它在复杂业务系统中仍然是首选。

开发者只需要做到以下几点。

  • 复杂的注解驱动映射(@JsonProperty、@JsonIgnore、@JsonSubTypes)
  • 与 Spring MVC / WebFlux 深度集成
  • 自定义序列化器、多态处理、Mixin

所以,Jackson 仍然是“不会错”的选择。

结语

2026 年的 Java JSON 生态,正在从“Jackson 一家独大”走向“标准库打底 + 高性能专精 + 成熟生态并存”的多极格局。

  • JEP 540 让 Java 终于补上了标准库的短板,降低了入门门槛;
  • Fory JSON 用极致性能证明了 Java JSON 处理还有巨大的优化空间;
  • Jackson 继续稳坐复杂企业应用的铁王座。

不管怎么说,还是建议大家对各种 JSON 抽离出一个中间层,不依赖任何一个三方库,后面即使是出现漏洞等问题,替换起来几乎是零成本,千万别被单一框架绑架了。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » JDK 28 自带 JSON API 了,Fastjson2 不是最快的了