Part of what's unfortunate about the attitude of a lot of people in the dynamic language community (honestly, Ruby attracts this far more than Python for some reason) seems to be a complete lack of understanding of why anyone would do anything differently. The same is true the other way, where Java programmers reliant on their IDEs can't imagine working without one, and vice-versa.<p>Used properly, static typing hurts you in some ways (verbosity, certain kinds of inflexibility) but helps you in other ways (static checking, better tools for discoverability and refactoring). As other people have pointed out, Java itself is also hampered by a lack of a few simple things, like closures and type inference, that could easily be added to the language and that other statically-typed languages have. The JVM is also hampered by the lack of hotswap to let you make changes to a running system at the very least in development, but even that limitation is being worked on by someone as part of the OpenJDK project (who knows if it'll ever make it to the official JDK, though).<p>There are situations where the tradeoffs are worth it, and situations where they're not. Anyone declaring the superiority of language X in all situations would do well to really try to talk to people who use other languages and understand their strengths and weaknesses instead of just dismissing them as relics of the past or slave laborers.