Decompiling and recompiling is not the same as reverse engineering!
From Wikipedia:
[...]In the second case, there is no source code available for the software, and any efforts towards discovering one possible source code for the software are regarded as reverse engineering. This second usage of the term is the one most people are familiar with.[...]
It's the definition that edgar_ortiz has probably in mind. So decompiling the software is required to reverse engineer it. And what edgar_ortiz probably fears is that someone removes a protection in his program or discovers something hidden.
Decompiling is very quick (a few seconds) and understanding how the program works is not really difficult when you have the source code and you're used to Java. Removing a protection, for example, wouldn't take more than a couple of hours in the worst case. To complicate things and really slow down the process, you may place some of your code in a .so library (an external library written in C).