A couple months ago I was at Gradle Summit. I was asking a Netflix tooling engineer what their IDE distribution was, and he guessed off the cuff that they were 80% IntelliJ and 20% Eclipse. He thought that was mostly for these two reasons:
- He felt IntelliJ had better Scala / Groovy / Kotlin support, and they (Netflix) have been incorporating an increasing number of non-Java JVM languages.
- Where they still use Java, they've been using annotation processors and bytecode manipulation tools, and many of them don't work with eclipse.
His overall impression was that it came down to ecj vs javac. ecj is undoubtedly faster, but as the JVM ecosystem broadened, they found that it was worth-while to accept a slower compiler (IntellliJ/javac) so that they had access to a broader array of
tools.
Here's an example, the Google AutoValue annotation processor. It has a class called
EclipseHack - if you read the code's comments, you'll see a frustrated person's venting. It even seems that some of the problems he faces have recently been fixed (e.g.
#300408, reported in 3.6, fixed in 4.5).
> Currently, java-power-assert only works on code compiled with javac. This means it works in IntelliJ IDEA, gradle, etc. Notably, it does not work in Eclipse
If you work at Netflix and you use IntelliJ, then all of your failed assertions get diagrammed out in little ASCII-art diagrams showing the value of all the expressions which didn't match. If you use eclipse, then you don't.
I had never heard of these issues before I talked to this guy. Anyone else have any stories from switchers? Not forum trolls, but technical decision makers?