I actually think that at the level we do programming for FIRST, Java could be a good language. It handles events and exceptions very cleanly from the programmer's standpoint, so you can focus on making a good algorithm. Event and exception handling is a critical part of programming any autonomous robot.
Java is a slow language, but the speed of decision making for FIRST robots isn't really that fast. You shouldn't use Java if you absolutely have to make the decision about how to position control surfaces in less than 2 milliseconds in order to keep the plane from flipping over. But if you don't care whether it takes 3 milliseconds or 15 milliseconds to compute a series of angles, Java is fine in terms of speed.
But the microcontrollers we have are just too slow to be able to effectively program them in Java unless you created an environment to compile Java into object code rather than into Java byte codes. Something like the xCode tools on the Mac, in which you can use Java to create OS X native Cocoa applications.
If you are just looking for an environment to do robotics in Java, try looking the Intelli-Brain robots by RidgeSoft. (
www.ridgesoft.com) They are nice little programmable (in Java) robots which can be extensively configured. You can even run the CMU cam on them.