The Spring framework is a good (or bad) example of this tension at work in Javaland.<p>If you did not use Spring, you'd have to invent your own configuration file format for your application. You'd work hard at it, wind up with something crappy, and you'd have to mess around with configuration system code whenever you change the system.<p>On the other hand, Spring exposes a huge amount of complexity to the end users and the error messages can be hard to understand. My experience is that if you read the Spring manual from cover to cover a few hundred times it will make sense, but if you try to learn "How to do X?" from Stackoverflow and Google you'll be driven crazy and if you have to deal with Spring files written by people who cut-and-pasted, you might be driven all the way to suicide.<p>Then there are all the apps like Jetty and Solr that have something similar built in but worse...