BloatAt the moment, my job requires me to look at the Java standard libraries, and my goodness, there is so much bloat there that it's just not funny. I was astonished that the world needed Boolean(String), but apparently we also need static Boolean valueOf(String). They both require a case-independent(!) string comparison which drags in a whole can of Unicode-related worms.
This reminds me of one of the other JAOO talks, by Walter Bischofberger of Computer Tomography GmbH. Their Sotograph tool does analyses of very large software projects in Java, C/C++ or C#. It's able to work at several different levels showing dependencies between classes, packages, modules etc. Bischofberger's standpoint was that keeping dependencies between different parts of a program to a minimum is very important for keeping a program understandable and modifiable. The relevant Anti-pattern is Big Ball of Mud. As a sort of illustration, they showed a graph of a huge blob of mutually dependent classes in the J2SE standard libraries - 1315 of them in all. He also showed it's been getting worse for each release of the SDK.
That's sort of depressing, even for someone like me who isn't quite as sensitive to smelly code as some people can be.