Redo the API in Java.
Big commit.