1. Is verbose by its very nature
2. Has language characteristics that push the developer in the direction of using design patterns at every opportunity.
So what might be a 1000 line program in Ruby is a 3000 line program in Java (translated as directly as possible), but then the deficiencies of the language turns simple idioms in a powerful language into complex design patterns in Java. See: closures, lack of duck typing/deficient type system, etc.
I think the Java culture plays a big part in the whole mess.
It would be easily possible in other languages to write 4 implementations of a basic list or public setter/getter for every member or buffered stream interfaces for all kinds of I/O.
Its not done because long solutions are frowned upon.
1. Is verbose by its very nature 2. Has language characteristics that push the developer in the direction of using design patterns at every opportunity.
So what might be a 1000 line program in Ruby is a 3000 line program in Java (translated as directly as possible), but then the deficiencies of the language turns simple idioms in a powerful language into complex design patterns in Java. See: closures, lack of duck typing/deficient type system, etc.