In order of priority:

  1. Load Options APIs to dynamically reload the options without needing a restart. ([#2898]())
  2. Merge Operator API (#2282)
  3. Compaction Filter API ()
  4. Ability to pass in native pointers/memory to reduce the JNI overhead
  5. Shared block cache across all column-families and instances. (#3623)
  6. Stats (Tickers and histograms) in sync with C++ API. (in-sync as of June 2017, due to and #2209)
  7. Implement Statistics.getHistogramString ().
  • Analyze which one of the comparator implementations is performing better either or Comparator
  • Outline a proper way to use Custom-C++-Comparators with RocksJava.
  • Remove everything but one Comparator implementation. Depending on the analysis listed above.
  • Document the performance penalties in related JavaDoc.
  • FindShortestSeparatorand FindShortSuccessor shall only do something if the Java method is implemented. What`s currently not the case.
  1. Rework to use both Slice and DirectSlice (see above).

  2. Introduce final on variables/members everywhere they are immutable.

  3. Implement for Java. For example, the ability to specify the Comparator which implemented in Java. @adamretter

  4. Custom merge operator for Java. At the moment it is only possible to use merge operators which are available in C++ but not implementing custom functionality solely in Java. Decision: will not be implemented.

  5. Document the performance penalties if log level is too verbose.

  6. Port remaining functionality in db.h to RocksJava.

  7. Update Statistics/HistogramData to 3.10 @fyrz

  8. Build isolation. Building Java API should not require building RocksDB. You should be able to use a Java API build with a separate existing RocksDB installation. The Java API native aspect will instead indirectly depend on a shared or static RocksDB lib.

  9. Expose optimistic locking @fyrz

  1. Look at Java 8 Long#unsigned operations.

  2. Consider whether we should add an UnsignedLong, UnsignedInt class types of our own to prevent users from sending invalid DBOptions.

  3. Restructure the package layout within the Java part.

  4. Consider converting callbacks to lambda expressions