Java is missing some features I&#x27;d really like, but there&#x27;s nothing actually wrong with the language.  You can write a C-like interface in Java and it will come out slightly simpler because of the garbage collector.  It has features beyond that, of course, but I think you only need functions, structs, and namespaces to make clean code, and Java has at least all of those.<p>I think the problem can be explained in two parts, having little to do with the language itself. Schools teach inexperienced programmers design patterns without teaching the absolute basics of code organization (refactor reused code into functions, move functions that deal with a class into that class) so they enter the workforce and try to solve easy problems with design patterns. Intermediate programmers in boring Java shops are judged by the complexity of their code, so the ones who never get past the solve-everything-with-design-patterns stage become senior programmers who mentor the newbies.<p>Half of the world&#x27;s bad, professional programmers use Java (the other half use Javascript), so they&#x27;re quite effective at drowning out the good Java programmers.  The whole system becomes clueless newbies cargo-culting together things that did well in performance reviews.