Technically yes. Your class files are essentially just text (not necessarily readable text) containing instructions for the JVM. It's the JVM's job to interpret that into machine language. So given that we know the spec of the bytecode in relation to the Java code, which we do, then it will always be possible to reverse the compilation process and get back to Java code.
Now, what the obfuscation tools do is to jig around with the Java code and make it as unreadable as possible while maintaining the functionality. it'll do things like turn your meaningful variable names into meaningless, essentially random, names. Remove all indentation and whitespace. Replace looping structures with some other structure that looks nothing like a loop but still is one. You get the idea. The purpose being that even if you were to decompile the bytecode back into Java perfectly (unlikely) then it still would make little sense. It would force the hacker to then try and un-obfuscate the Java code, adding another level of complexity to the task.
What I meant about the licence thing was to just add a Copyright declaration to the top of all your source files. While not adding any technical security it does add some legal security. So when your system gets decompiled and resold by some unscrupulous person you can take them to court for Copyright theft.
I would imagine it would be harder to decompile an application created with a compiled language as you are working with binary files containing machine code. It's probably not impossible but just much more difficult.
The decision of how far you take this should depend on just how much at risk you think your application is of being hacked. For example, if your application solves the remaining 6
Millenium Prize Problems then I would imagine it would be at significant risk of people wanting to reverse engineer it to obtain the formula, and thus go claim the $6m prize. On the other hand, if your application tracks parts through a warehouse then the risk of hacking is quite low so the extra effort to lock it down probably wouldn't be worth it.
With regards to using JNI. You would be adding an enormous amount of complexity to your system making it very difficult to develop and maintain. I can not advise you do that.