flatbuffers // Example.fbs table Person { name: string; age: int; } root_type Person; flatc -j Example.fbs import com.google.flatbuffers.FlatBufferBuilder; import Example.Person; public class Main { public static void main(String[] args) { FlatBufferBuilder builder = new FlatBufferBuilder(); int nameOffset = builder.createString("John Doe"); int age = 30; Person.startPerson(builder); Person.addName(builder, nameOffset); Person.addAge(builder, age); int personOffset = Person.endPerson(builder); Person.finishPersonBuffer(builder, personOffset); byte[] serializedData = builder.sizedByteArray(); } } import com.google.flatbuffers.ByteBufferUtil; import com.google.flatbuffers.Table; import Example.Person; import java.nio.ByteBuffer; public class Main { public static void main(String[] args) { ByteBuffer buffer = ByteBuffer.wrap(receivedData); Person person = Person.getRootAsPerson(buffer); String name = person.name(); int age = person.age(); } }