wiggles
It's nearly impossible to get past the type system unless your code is correct, especially for small chunks of code.
I'm not sure how you can write any non-trivial Java program without lots of getters, unless you expose your fields everywhere, and end up in maintenance hell.
hashCode/equals/toString are boilerplate code that is best machine generated, because humans make mistakes when writing the same boilerplate code for the 500th time.
The fact that Java is strictly statically typed means the IDE can safely refactor your code without breaking things, though obviously you can still get naming conflicts, which if occur the IDE will not let you continue.
Your comparison with natural language is disingenuous, they are not parsable by machines, and hence are not easily refactorable; a word processor can't determine the context from your cursor location, and hence can't auto-complete words.
Here is Java's complete grammar: http://java.sun.com/docs/books/jls/second_edition/html/synta....
I also haven't seen a character name like SimpleRemoteStatelessSessionProxyFactoryBean (that's a real Spring class name...)
What about refactoring? Eclipse's rename tool for one changes the way you write code as refactoring is so trivial you do it without thinking.
Eclipse's debugger is also top notch, far better than jdb.