Here are a couple of sites for folks to learn to program in Java, or to get better at it.
http://www.alphaworks.ibm.com/tech/robocode
In here you program a virtual battling robot, and pit it against others. The more advanced your programming skills the better your robot performs in the arena.
http://www.alphaworks.ibm.com/tech/coderally
Same concept but with race cars instead of robots. The sites also contain various tutorials for Java programming and various other readings and links.