How would I deploy a java desktop application that is designed to run on all platforms while making it difficult for someone to decompile and reverse engineer the application?
More importantly, should I even bother with reverse engineers and decompilers?
My current plan is to let user download or execute .jnlp file which will launch the desktop application on their computer. Are there any precautions I should be taking with this approach? It seems like this won't give me any protection against someone decompiling my application.
I've read that AOT compilers can make my Java application run natively on the target OS while making decompilation and reverse engineering very difficult. I am considering http://www.excelsior-usa.com/articles/java-to-exe.html#aot article for my basis on this matter. However, it seems like jar library loaded on runtime is not supported across all platforms, and only x86 architecture is supported, so my application will not work on 64 bit systems?
You likely shouldn't bother.
ProGuard can obfuscate.
A decent encryption solution will cost money, and with open-source Javas, not overly difficult to circumvent anyway. There are some hardware key solutions, AFAIK they would be vulnerable to the same techniques.