Java is a nice medium between scripting languages (like Perl and Python) and natively-compiled languages like C and C++. While I have a number of issues with the design, it is a decent language choice and has a huge edge over most other languages in portability. If you are writing code and don't know what platform it will be run on, then Java is a good choice.
One issue with Java is its "noun" focus on objects, and in particular lack of anonymous functions ("verbs"). Below are some articles on the limitations of this approach.