The routine approach is Obfuscator, which most expert Obfuscator
use some techniques for dramatically complex your source code from
decompilation , but the more advanced approach is excrypting your
source code after compilation and developing custom classloader for
decryting your sourcecode to execute on JVM.
so there is nothing to decompile or reverse engineering.