having used java, c++, c# and VB i'll comment on what I like/don't like. to me the main disadvantage of Java is that if you get anything more complex than a simple dialog box with a few controls the java app/JVM tend to start eating a ton of RAM. also for java apps to run correctly the person has to have JVM (which honestly, the majority of windows users still don't have).
one of the main reasons i left Java is because of Swing. it's GUI always felt "sticky" to me (don't know how else to explain it). controls and dialog boxed didn't use to have the response time that C++ etc with windows-controls had (although i have noticed a vast improvement over the last year or so).
to me, C++ is good because if written correctly it'll run on almost any windows machine (and if written correctly and compiled for that platform) and it might run on different OS like linux. also a C++ program generally has a very small memory footprint. C++ is also probably one of the most powerful languages where Java you are limited to JMV (although those limits most people will never reach).
VB to me, I just HATE the syntax. I hate having to type "END IF;" i like just using a bracket like java, c++, c#. also VB also isn't real powerful except for dialog/window based programs.
If you've used java before, you'd probably like C#. syntax is very similar and i've head a few java fans complained lot of the ideas for the syntax must have gotten ripped right out of java.