I recently found out about Android Studio's decompiler and a few questions arose as I'm currently involved in an Android project. I just tried it and it generated near perfect code, surprisingly.
How good are Java decompilers nowadays? Are there protection mechanisms to prevent decompilation? Any security concerns to have in mind?
Best.
This questions is too broad. So I will split the questions and answers:
How good are Java decompilers nowadays?
Very good. You are likely to get readable classes back.
Are there protection mechanisms to prevent decompilation?
Yes, things like code obfuscators, or even other alternatives
Any security concerns to have in mind?
All security concerns are best kept in mind, depending on your application.
Against decompilers?
Not really, your code should be readable and still dont pose a threat to the system or its users. The best concept here would be the "white box" concept, in wich your code does not need to be hidden.
If you are handling something that should not be know, try executing it in a controlled enviromment, such as a controlled webservice.