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 walking through the code with a debugger while jumping around the source code by semantics.
2. Standards. First its servlet, but soon web containers. Even in its early days, such standard made it much easier to write web applications. Engineers just needed to remember a few simple rules before producing concurrent web services.
3. JVM and all the toolchains. All the jconsole, jstack, jmap, gc logs, etc and etc. They may be norm now, but when they were productivity boosters when they first came out.
4. Java's standard libraries, especially the concurrency libraries. All those containers and high-level synchronizers are so much easier than the vanila mutex. This is something I don't quite understand about the Go community: why are people fine with using Mutex everywhere?
5. All kinds of JSRs, such as JAX-RS. You may hate them personally and passionately, but they do provide easy enough APIs and most importantly a standard for all kinds of frameworks to support. A Java programmer can easily switch from one framework to another without much learning curve.