This is often true because you want to be able to change the configuration without recompiling the program (which requires installing all the build tools on a production system as well as increased downtime).
When I first tried to use a J2EE system I was literally amazed by the amount of XML configuration required.
When I first tried to use a J2EE system I was literally amazed by the amount of XML configuration required.