> 1. IDE. When Eclipse was released back in the early 2000's, it was an amazingly productive tool. Refactoring is a one or two keystrokes away. Java's simple yet mostly sufficient type system allows us to jump around definitions, references, usages, and declarations easily. The built-in compiler of Eclipse allows really accurate auto completions. I could easily learn a new code base by walk the code through a debugger while jumping around the source code by semantics.
I wonder how much Java success in early 2000's was related exclusive to this. I remember asking Java programmers why they liked it so much and all they talked was about IDE features and not the language itself. It looked like some couldn't even tell the difference between an IDE and a programming language.