I agree with you that Java is painful. But if &quot;enough is enough&quot;, abandoning all types is throwing out the baby with bathwater. You make a compelling argument for languages with type inference and richer typing systems. There are many such languages. For the JVM, there is Scala.