Java Out of the Enterprise

I don't really think of's linux site when I'm looking for Java news but this entry caught my eye. In it, he complains about the tendency of java libraries to make heavy use of patterns like the Factory pattern to provide as much flexibility as possible. He's not the first one I've heard complain about this tendency.

So what's the reason for this alleged over-engineering. The author goes on to praise his eventual perl solution for the speed with which he was able to solve his problem. Certainly one consideration for library selection is speed of development and ease of use. So why, as java developers, do we build in so much (often) unnecessary complexity? My personal theory is that from the start as (professional) java developers, we're taught to think in terms of the enterprise. That means considering the myriad different platforms the application will run on: databases, operating systems, etc. And that's certainly a valid concern but things like JDBC operate without all the Factory this and getInstance that.

So why are we so enamored with all this complexity? Is it really worth it? I've gotten used to much of it