A little surprised Spring is not mentioned. Composition in Java is a nightmare without Spring, and you can do some really interesting things in configuration that would take you days of writing initialization code in very little time.
If not for Spring, I'm not sure I would want to construct things in Java at all.