Skip to main content

Apache Fury (incubating)

A blazing-fast cross-language serialization framework powered by just-in-time compilation and zero-copy

High performance

Compared to other serialization frameworks, there is a 20~170x speed up.

Easy to use

No need for DSL, you can use Fury effectively with your intuition.

Multi-languages

Supports popular programming languages such as Java, Python, C++, Golang, Javascript, Rust, and more will be added in the future.

Quick Start!

Choose a language to get started.

Java logoJava
Python logoPython
Golang logoGolang
JavaScript logoJavaScript
Rust logoRust
More languagesMore
programming-coding
1import java.util.List;
2import java.util.Arrays;
3import org.apache.fury.*;
4
5public class Example {
6  // Note that Fury instances should be reused between
7  // multiple serializations of different objects.
8  static ThreadSafeFury fury = Fury.builder().withLanguage(Language.JAVA)
9    // Allow to deserialize objects unknown types,
10    // more flexible but less secure.
11    // .withSecureMode(false)
12    .buildThreadSafeFury();
13
14  static {
15    // Registering types can reduce class name serialization
16    // overhead but not mandatory.
17    // If secure mode enabled
18    //all custom types must be registered.
19    fury.register(SomeClass.class);
20  }
21
22  public static void main(String[] args) {
23    SomeClass object = new SomeClass();
24    byte[] bytes = fury.serialize(object);
25    System.out.println(fury.deserialize(bytes));
26  }
27}
28