Description
migrated from https://github.com/gearpump/gearpump/issues/1967 and https://github.com/gearpump/gearpump/issues/1938.
The current user / developer interface is not friendly to Java users / developers. For example,
- private[package] in Scala is public in Java
- List in Scala is constructed like "$colon$colon$.MODULE$.apply"
- constants of companion objects in Scala is accessed like "Foo$MODULE$.constant()"
We should improve the codebase, and probably add some tests to ensure the interoperability for all public interfaces and a guide to follow.