Java API

- closes #63