Program distributions require more resources than actually needed.
- A lot of code or whole libraries are not used by application at all
- Java does not have explicit provided/required API definitions thus unused code cannot be easily discovered
- Developers tend to rather create code than clean up old parts
- It is not easy to predict which library can be deleted since dependencies are unknown