跳到主要内容

Apache Fory 1.4.0 正式发布

· 阅读需 9 分钟
杨朝坤
Apache Fory PMC Member

Apache Fory 团队很高兴地宣布 1.4.0 版本正式发布。本次发布由 9 位贡献者共同完成,包含 65 个 PR。请访问安装页面,获取适用于您所用平台的库。

亮点

  • 面向 Java 推出 Fory JSON,提供高性能代码生成、丰富的注解与 mix-in、动态属性,以及 Android 和 GraalVM 原生镜像支持。
  • 通过可配置的容器内存预算、更高效的流反序列化、Python 3.14 支持,以及多项跨运行时修复,进一步提升性能、安全性和兼容性。

面向 Java 的 Fory JSON

Fory 1.4.0 推出了 Fory JSON,这是一款高性能、线程安全的 Java JSON 序列化框架。它能够在标准 JSON 与符合 Java 使用习惯的领域对象之间进行直接映射,适用于 HTTP API、浏览器通信、日志、配置及其他需要互操作的文本载荷。

主要能力包括:

  • **高性能序列化:**经过优化的 reader 和 writer 可配合解释执行及运行时生成的序列化器,同时加速 JSON 编码与解码。
  • **丰富的 Java 对象映射:**支持普通类、Java record、基于 creator 构造的不可变类、常用 JDK 类型和泛型容器。
  • **灵活的定制能力:**注解、mix-in 和自定义 codec 可共同将应用类型映射到 JSON,覆盖属性名称、顺序、包含规则、creator、多态、展开值、动态属性和特殊表示形式。
  • **广泛的平台支持:**支持 JDK 8 及以上版本,同时支持 Android 和 GraalVM 原生镜像。

在应用中添加 fory-json 依赖:

<dependency>
<groupId>org.apache.fory</groupId>
<artifactId>fory-json</artifactId>
<version>1.4.0</version>
</dependency>

ForyJson 构建完成后不可变且线程安全,因此同一个实例可以在多个线程间复用:

import org.apache.fory.json.ForyJson;

public final class JsonExample {
private static final ForyJson JSON = ForyJson.builder().build();

public static final class User {
public long id;
public String name;

public User() {}
}

public static void main(String[] args) {
User user = new User();
user.id = 7;
user.name = "Alice";

// Serialize to JSON text and deserialize from text.
String text = JSON.toJson(user);
User fromText = JSON.fromJson(text, User.class);

// Serialize directly to UTF-8 bytes and deserialize without an intermediate String.
byte[] utf8 = JSON.toJsonBytes(user);
User fromUtf8 = JSON.fromJson(utf8, User.class);
}
}

完整的类型模型、注解与 mix-in、动态属性、自定义序列化器、安全控制,以及 Android 或 GraalVM 的配置方法,请参阅 Fory JSON 文档

新功能

问题修复

其他改进

新贡献者

完整变更日志https://github.com/apache/fory/compare/v1.3.0...v1.4.0