I was a little harsh in my last reply and i apologize to teo. I was little out of time and couldn't reply properly.
To start off, lets get one thing out of the way, I'm not saying Java is the best language, in fact i currently stay away from java but for my own personal reasons.
Moving on, I won't go into java's history to make my point i'll just get to it. People tend to think java is slow granted they focus on what java is not intended to do. I believe every one in this topic already knows as well as i do that its the right tool for the right job.
Java's obvious slogan is "Write once, run anywhere". You could compile (I'll get to that term later) on a windows machine and run your project on OS/2 for all i care so long as OS/2 has a JVM. Keyword here is JVM, Sun provides a JVM for almost every operating system or platform which acts as a mid point between the "Compiled" code and the OS's native code. The reason i quoted the word compiled because Java in its nature and based on what is described above is mildy interpreted.
Source --(compiler)--> Bytecode --(JVM)--> Native code.
Baring in mind the transition above, you can easily identify that there's an additional step available as opposed to how its done with C/C++.
You might be saying at the moment that i'm contradicting myself then when i say that java is not slow. However i do stand corrected, once the JVM is started the performance of Java is not slow per se. There's no doubt that C/C++ perform better due to their aspect of being in direct contact with the native OS libraries.
Unlike C/C++, when you are doing a certain project in java you do not worry about the Operating system. You could say that with a few conditioning and includes you could have the same source code able to compile on both windows and linux lets say, for C and C++ and i totally agree with you, however the same exact bytecode can be moved around and used as is when it comes to java.
"You lie! all my code compiles perfectly fine on all OSes" you say. Well you should ask yourself whether you're using any OS specific library (windowing for example).
To keep things short most of you are probably wondering since C/C++ perform better on the OS level, where is the actual need for Java? Given the history of Business applications and how things have moved on to inter/intranets, a component model was inevitable. The first incredibly powerful n-tier architecture was provided by the OMG group with their application of CORBA (Common Object Request Broker Architecture) and based on this logic major vendors such as Sun, IBM, Oracle, Redhat and numerous others have formed alliance on the JSR end in order to form JavaEE(first release was j2ee).
If you have a few moments, kindly visit
http://java.sun.com/javaee/ to find out more.
Edit: Oh and the reason i stay away from Java and everything else right now, is because they are too verbose :)