It’s been my experience that nothing is guarantee...obfuscating like what idarke said may inhibit other from looking at your code... However if someone REALLY what to look at your source code they will find a way to...be it java or another language...
*** The following is what I found on the web...doing a search on this topic ***
The only way of protecting your code is to obfuscate it. Some IDEs have this facility, but you usually have to pay for it. Instead, when your code is written and tested, change all the variables and methods and class names to mixtures of lower-case 'L's and '1's. This looks like l11l1l1l1l1 which when viewed in moonscapes fonts like courier, i.e. as in a coding environment, it is extremely hard to tell the difference between L and 1. Therefore it is extremely difficult for hackers to translate your code. Even if they can tell the difference between these character, then determining actually what the class if used for is even harder.
An easy way of making decompilation difficult is to use anonymous classes for your event handlers. Most decompilers cannot process these classes perfectly and so the java source code they produce is not 100% perfect. Alternatively, go through your code, and at the end of each line, press delete to make the next line continue on the current one. Therefore, you end up with a one-line source file, which is very tricky to parse, so writing a program to parse it would be almost too time consuming.
There are many techniques to obfuscate your code and prevent other people understanding it, but no matter what lengths you got to, somebody somewhere will be able to decipher it.
As for you other question > Why use java?
Well java like other languages has its up and downs - some plus are:
Reducing the number of buffer-over runs.
More flexibility and extensibility than in other languages
Error-processing system is quite advanced
Cross-Platform options
No pointers!
This is just my two cents...