Hey,
Ok heres my $0.02 on this topic. First off Java is not
useless in any means. If you use Java you simply have to abstract the hardware when your using it (Can be done with Player / Stage and / or ROS).
The past 2 years I've been in a robotics club at my university (University at Buffalo) and on our autonomous robot last year we used Java and this year we are moving to C++. We are making the move because we are not using our "home-brewed" hardware abstraction anymore, but instead are making the jump to ROS. While ROS does have Java bindings, it's C++ bindings are much better, and are simply better suited to our needs. Also C++ allows you to implement "advanced" features such as image processing using tools such as OpenCV.
I would say if it is *simple* robotics that you want to program, something like Java on top of a layer such as ROS would be a excellent choice.
If you would like to know more about the competition my club is in, its called the
Intelligent Ground Vehicle Competition (IGVC)Also, while there's not much info on it, it does have some pictures you can check out my clubs
website