In the real world, copyrighting code and getting a patent for an approach cannot provide adequate protection if...
a competitor or hacker can easily learn the implementation from the source code. This chapter from the book Covert Java: Techniques for Decompiling, Patching, and Reverse Engineering, by Alex Kalinovsky, focuses on smart ways to protect intellectual property (IP) of Java applications.
Obfuscation is the process of transforming bytecode to a less human-readable form with the purpose of complicating reverse engineering. Obfuscation is one of the best ways to protect the intellectual property of Java bytecode.
Obfuscators perform some or all of the following transformations: stripping out debug information, name mangling, encoding strings, changing control flow, inserting corrupt code, eliminating unused code, and optimizing bytecode.