Looks like i may've missed the boat on throwing in my 2 cents. Ben's take on the whole thing is just fine. I just wanted to re-iterate that Java is designed to be a portable programming platform. Basically, a virtual machine is used to run java code. This is an extra layer that basically translates compiled java binaries into machine code native to the system it's running on, thus far slower than compiled C++, as it's compiled into native machine code.
C/C++ is definitely the most widely used, and most versatile language. it will remain to be the most used for professional applications. It's taught in all related curriculums, and possesses a great deal of power. I'll also say, as much as I dislike the inherent lack of control in visual basic, it's great for rapid development of small applications. If there is a "tool" you need, or a simple app just to get something done, VB, or C#/VB.NET will work great for you.
But, in the enterprise world, you'll get nowhere w/o C++. But, you can get anywhere w/o Java. Even in the web world, it has increasingly limited application. For instancce, Flash has native socket support. I recently ported my web-based chat client from java over to flash, and I'm quite glad I did. Also, M$ stopped support java, which sucks, but it's reality... and that does have a large effect on how easy it is for the n00b with the new PC to run java apps. (pain in the ass, java.sun.com)
Edit: Also, VB/C#.net is great for database-driven apps... ADO.Net is a huge improvement over standard ADO with VB6. Database apps in C/C++ are considerably nastier