Add Java binding; replace ReadReport struct with individual 'out' params; fix up API docs