Java isn't technically compiled, but rendered into a compressed semi-binary form that is faster to load. From what I know, the VM still remembers the function names, the object names and methods, and so on. Thus if you're descriptive they could pull it apart enough to know what you've done, and steal your source code.

The obfuscator would work much like the javascript ones, they mangle names and methods to make it harder to understand.

This is as far as I understand, and I could be wrong.