protostuff

A serialization library with built-in support for forward-backward compatibility (schema evolution) and validation.

Available serialization formats:

  • protobuf
  • protostuff (native)
  • graph (protostuff with support for cyclic references. See Serializing Object Graphs)
  • json
  • smile (binary json useable from the protostuff-json module)
  • xml
  • yaml (serialization only)
  • kvp (binary uwsgi header)

Support for messages that are generated by the protostuff-compiler (java_bean):

  • cyclic references via graph format
  • see CompilerOptions for more customized compilation of .proto files

Support for existing pojos (See runtime schemas):

  • cyclic references via graph format
  • polymorphic (a nested message can be an interface/abstract class or even java.lang.Object)

Support for existing protoc-generated java messages:

  • see the io instructions for json, xml, yaml)
  • no support for cyclic references (limitation of the builder pattern)

Interoperability across various mobile platforms:

  • android
  • kindle
  • j2me (protostuff-me module)

Transcoding support:

  • converts one encoding to another. See PipeUsage.
  • Source and Sink
    • protostuff, protobuf, json, json-numeric, smile, smile-numeric, xml
  • Sink only
    • yaml

Releases are available in the central maven repositories.