The problem used to be the language. Java used to be extremely rigid in the way it forced the developer to write classes everywhere, factories and what not. This and the std lib API as well which was quite verbose. And let's not get started on Java EE which was the recommended way to develop Java applications. All of that are certainly part of the language. Remember how hard and verbose it was to hydrate records from a DB result and turn them into Java objects with pure JDBC? The language certainly was at fault.