riak-java-crdt
riak-java-crdt copied to clipboard
Java CRDT Library with a focus on supporting Riak.
Java CRDT Library 
A collection of basic conflict-free replicated data types (CRDTs). Currently everything is set up to serialize into JSON objects.
Goals
- Provide a set of common interfaces, patterns, and objects for working with CRDTs.
- Some degree of storage independence. The emphasis is on Riak, but the objects should be portable.
Features
- Support for GSets, 2PSets, ORSets, GCounters, PNCounters.
- Unified interfaces for serialization/deserialization of CRDT objects.
- JSON serialization.
- JSR 330 annotations for dependency injection.
- JSR 305 annotations for documenting proper use of the API and documenting thread safety.
Future Work
Roughly in order:
- Better Jackson use and integration.
- Removing the self-serialization aspects (or at least make them optional) to better integrate with available tools for working with annotated objects. There are some challenges here that I am trying to find a clean solution for.
- Tools for specifically working with Riak.
- Integration tests.
- Full, eventual transition to Java 7.
- Some form of versioning for (de)serialization purposes.
- Have the counters support other Number types.
- Guice modules with the bindings for convenience.
- Derived types for collecting more specific types of information (e.g., statistics).
- More basic types (e.g., graphs, LWW).
- Add garbage collection.
- Support for other serialization methods.
- Local caching of immutable views.