Looks like I missed most of this conversation which ended half a year ago (the last change, coincidentially, was on my half-birthday...)...
I don't use Java professionally (and the closest I've come is teaching beginners to use Java, which doesn't count as anything relative to actually using Java in production). Basically, my use of Java is completely for "art". I've programmed in Java competitively (against mostly C/C++ programmers, which is quite unfair to them :-p) since 2002 in various college and open competitions. Some of these required me to optimize my code for speed so it could match speed constraints set based on the C++ solutions. Others allowed me to use the java libraries inasmuch as I'm familiar with them (thanks to Robocode, a bunch of geometric problems go quicker now :-) ), and the emphasis was more on how fast I could code up a solution. To be honest, I'm not sure which I think is more fun (but the latter certainly takes less time). I think the more I use object-oriented design as well as my available libraries, though, the more "Java" I feel like my solution is (whether anyone cares about that or wants to make their robots Java-esque or non-Java-esque). So there's some programming philosophy for you. -- Kawigi