I switched from Eclipse to Intellij only three years ago because it actually used to be pretty good but just fell behind too much. Gradle & Spring Boot were the reason I gave up on Eclipse. I just couldn't get a project imported correctly without running into a lot of bugs. So, when a new project came up I just switched over and started using Intellij.
Before that, for doing vanilla maven + Java projects Eclipse was awesome and generally running circles around intellij in terms of performance, which is still something that is off by order of magnitudes in Intellij and something I miss a lot.
Intellij users are always surprised when I bring that up and say it is fine on their machine. And then I point out that 5-20 seconds to run a unit test after a 1 letter code change is obscenely slow compared to Eclipse because it finishes incremental compilation a few ms after you lift your finger and is ready to run your test. Intellij attempted to integrate the Eclipse incremental compiler but it is not used by default and generally not that well integrated. Their compilation strategy depends on a lot of caching, which is hard and frequently gets in an inconsistent state (i.e. your IDE lies to you about things compiling or not compiling), which is why people routinely rebuild their whole project, or worse invalidate caches and restart (a top level menu option because it needs to be).
There are, despite the often very aggressive IntelliJ proponents, many areas where Eclipse beats IntelliJ, and incremental compilation is indeed one of the most important. It is also possibly the most important feature in a Java IDE. Ctrl+s and you know the whole codebase is compiled. Go to another file and any code change is available in the code completion (like new or changed methods signatures). Any errors from the change you just saved is shown immediately from across the entire codebase.
I just can't live without a core thing like this missing, and compounded with a number of other things that Eclipse does better, I stay on Eclipse. Unfortunately many younger developers think IntelliJ is all there is.
When's the last time you checked out IntelliJ? It does incremental compilation these days, plus auto-save-and-compile whenever you switch tabs (not just when you save the current tab, which bit me many times in Eclipse; though I haven't used Eclipse in at least four years now), so code completion is immediately updated. I'm pretty sure this has been the case for a few years now.
Yesterday, sorry to say but still off by magnitudes. These things are measured in ms on the eclipse side and in whole seconds on the Intellij side. On a good day it's less than 5 seconds in Intellij. I developed in Eclipse before I switched a few years ago and while it was a bit finicky with gradle, maven support was pretty solid. I never had issues where Eclipse compilation state was wrong for more than a few hundred ms. Basically if it says it compiles it means it compiled without errors, class files exist and when you run something it jumps straight to forking the process with no delay. In Intellij, it takes seconds at best; sometimes closer to 30-60 seconds.
Given that performance is a recurring topic in the Intellij release notes I conclude that they know they still have issues there and they are slowly looking for ways to make things faster. This is not a solved problem.
Part of this is the Kotlin compiler; part of this is indexing; part of this is simply caching logic.
I recently worked on the Elasticsearch code base in intellij. Fast is not a word I would use to describe that. It's a big code base and it clearly was struggling with it. I know some Elastic developers that still use Eclipse basically for this reason.
Before that, for doing vanilla maven + Java projects Eclipse was awesome and generally running circles around intellij in terms of performance, which is still something that is off by order of magnitudes in Intellij and something I miss a lot.
Intellij users are always surprised when I bring that up and say it is fine on their machine. And then I point out that 5-20 seconds to run a unit test after a 1 letter code change is obscenely slow compared to Eclipse because it finishes incremental compilation a few ms after you lift your finger and is ready to run your test. Intellij attempted to integrate the Eclipse incremental compiler but it is not used by default and generally not that well integrated. Their compilation strategy depends on a lot of caching, which is hard and frequently gets in an inconsistent state (i.e. your IDE lies to you about things compiling or not compiling), which is why people routinely rebuild their whole project, or worse invalidate caches and restart (a top level menu option because it needs to be).