I Still Prefer Eclipse Over IntelliJ IDEA

Over the years I’ve observed an inevitable shift from Eclipse to IntelliJ IDEA. Last year they were almost equal in usage, and I have the feeling things are swaying even more towards IDEA.

IDEA is like the iPhone of IDEs – its users tell you that “you will feel how much better it is once you get used to it”, “are you STILL using Eclipse??”, “IDEA is so much better, I thought everyone has switched”, etc.

I’ve been using mostly Eclipse for the past 12 years, but in some cases I did use IDEA – when I was writing Scala, when I was writing Android, and most recently – when Eclipse failed to be ready for the Java 9 release, so after half a day of trying to get it working, I just switched to IDEA until Eclipse finally gets a working Java 9 version (with Maven and the rest of the stuff).

But I will get back to Eclipse again, soon. And I still prefer it. Not just because of all the key combinations I’ve internalized (you can reuse those in IDEA), but because there are still things I find worse in IDEA. Of course, IDEA has so much more cool features like code improvement suggestions and actually working plugins for everything. But at least some of the problems I see have to do with the more basic development workflow and experience. And you can’t compensate for those with sugarcoating. So here they are:

  • Projects are not automatically built (by default), so you can end up with compilation errors that you don’t see until you open a non-compiling file or run a build. And turning the autobild on makes my machine crawl. I know I need an upgrade, but that’s not the point – not having “build on change” was a huge surprise to me the first time I tried IDEA. I recently complained about that on twitter and it turns out “it’s a feature”. The rationale seems to be that if you use refactoring, that shouldn’t happen. Well, there are dozens of cases when it does happen. Refactoring by adding a method parameter, by changing the type of a parameter, by removing a parameter (where the IDE can’t infer which parameter is removed based on the types), by changing return types. Also, a change in maven/gradle dependencies may introduces compilation issues that you don’t get to see. This is not a reasonable default at all, and I think the performance issues are the only reason it’s still the default. I think this makes the experience much worse.
  • You can have only one project per screen. Maybe there are those small companies with greenfield projects where you only need one. But I’ve never been in a situation, where you don’t at least occasionally need a separate project. Be it an “experiments” one, a “tools” one, or whatever. And no, multi-module maven projects (which IDEA handles well) are not sufficient. So each time you need to step out of your main project, you launch another screen. Apart from the bad usability, it has some memory overhead.
  • Speaking of memory, It seems to be taking more memory than Eclipse. I don’t have representative benchmarks of that, and I know that my 8 GB RAM home machine is way to small for development nowadays, but still.
  • It feels less responsive and clunky. There is some minor delay that I can’t define well, but “I feel it”. I read somewhere that they were excessively repainting the screen elements, so that might be the explanation. Eclipse feels smoother (I know that’s not a proper argument, but I can’t be more precise)
  • Due to some extra cleverness, I have “unused methods” and “never assigned fields” all around the project. It uses spring, so these methods and fields are controller methods and autowired fields. Maybe some spring plugin would take care of that, but spring is not the only framework that uses reflection. Even getters and setters on POJOs get the unused warnings. What’s the problem with those warnings? That warnings are devalued. They don’t mean anything now. There isn’t a “yellow” indicator on the class either, so you don’t actually see the amount of warnings you have. Eclipse displays warnings better, and the false positives are much less.
  • The call hierarchy is slightly worse. But since that’s the most important IDE feature for me (alongside refactoring), it matters. It doesn’t give you the call hierarchy of default constructors that are not explicitly defined. Also, from what I’ve seen IDEA users don’t often use the call hierarchy feature. “Find usage” I think predates the call hierarchy, and is also much more visible through the UI, so some of the IDEA users don’t even know what a call hierarchy is. And repeatedly do “find usage”. That’s only partly the IDE’s fault.
  • No search in the output console. Come on, why I do I have an IDE, where I have to copy the output and paste it in a text editor in order to search. Now, to clarify, the console does have search. But when I run my (spring-boot) application, it outputs stuff in a panel at the bottom that is not the console (it’s called “run tool window”) and doesn’t have search.
  • CTRL+arrows by default jumps over whole words, and not camel cased words. This is configurable, but is yet another odd default. You almost always want to be able to traverse your variables word by word (in camel case), rather than skipping over the whole variable (method/class) name.
  • A few years ago when I used it for Scala, the project never actually compiled. But I guess that’s more Scala’s fault than of the IDE

Apart from the first two, the rest are not major issues, I agree. But they add up. Ultimately, it’s a matter of personal choice whether you can turn a blind eye to these issues. But I’m getting back to Eclipse again. At some point I will propose improvements in the IntelliJ IDEA backlog and will check it again in a few years, I guess.

35 thoughts on “I Still Prefer Eclipse Over IntelliJ IDEA”

  1. It would have been nice to actually say what are the cool features of IDEA as well, not just list the problems 😉
    IMHO, these are:
    – autocomplete is amazing
    – instant search everywhere
    – easy refactoring

    You already mention support for new technologies, which they try to anticipate and prepare. While Eclipse team is usually adding support after the release, JetBrains already introduced some Java 10 support this week…

    Now one cool tip that really helped me – you can use Eclipse compiler in IDEA!

    Just go to Preferences – Compiler and change it. Incremental compilation FTW. It is way superior, much better then javac, as it is designed for use in IDE. Should be the default one, but it isn’t.

  2. True – ultimately it’s a matter of personal choice – I don’t agree with 2 points.
    You cannot blame the lack of knowledge of what’s “Call Hierarchy” on the IDE – that’s user’s fault IMO.
    Output console is searchable.
    Unless we’re not talking about the same “panel/window”…but in “Run” and “Debug” panels, where normally the app is sending default console output – it’s searchable and has highlighted matching in the text.
    Personally I find that the refactoring features are better than in Eclipse, and the code hints are awesome. Things like “getOrDefault” and “computeIfAbsent” on Map, inner classes to lamba expressions, method reference in lambda expressions, working with the streams API – way more easier than in Eclipse. Of course – this is again a knowledge aspect and is responsibility of the developer, not the IDE. But what I see among my colleagues, is that the people who use IDEA generally have better knowledge of the methods in new/recent Java APIs than the ones who use Eclipse – even for APIs that are not hinted from IDEA.

  3. I think at this point is just a question of religion. As long one is comfortable. I found I spend less time configuring with IDEA

  4. Completly agree with you. Tried IntelliJ for a year and than went back to Eclipse. I can even add something interesting about your first point, the projects not being built automatically. In projects I worked where team members used IntelliJ, quite often we had code being pushed/committed with basic compilation errors. Things that never happen with people using Eclipse. Simply because they see those errors right away.

  5. @Rodrigo
    Not seeing compilation errors using default IDEA compiler configuration indeed sucks.

    Having teammates that will push to repo without running the code they wrote at all… You’ve got much bigger problems than their choice of IDE 😉

  6. Interesting how even the most hardcore supporters of Eclipse switch to IntelliJ IDEA as soon as something else than Java-only is involved: as soon as either Scala, Android, Kotlin or Javascript (*) is added to the development stack, Eclipse is set aside.
    Also interesting: all issues you listed can be solved by taking the time to configure IntelliJ to your needs.

    (*) I almost added Spring to the list: indeed I’ve not seen a recent presentation by Pivotal where STS was used…

  7. “Projects are not automatically built ” – am I the only one who uses Nodemon for Java projects 😀 (both on IDEA and Eclipse)

  8. “No search in the output console.”
    did you try “ctrl + f” after clicking on a console tab? ))))

    “The call hierarchy is slightly worse.”
    did you try “call graph from here” or “to here”?

    “Projects are not automatically built (by default)”
    “You can have only one project per screen”
    “Speaking of memory”
    “It feels less responsive and clunky.”
    veeery strange “fault”, something wrong with you if it’s critical for you 🙂

    “Due to some extra cleverness,”
    that’s only your problem – fix code, project or disable checking (even it’s possible).

    “CTRL + arrows by default”, this is configurable, but is yet another odd default. ”
    can’t understand your problem here, if you can rebind it to a “CTRL+arrows” do it. What’s a reason for complaining?

    as for me I’ve never like eclipse cause it worked worse than a Netbeans (I wasn’t a spring developer that time), and now 3 years with Intellij and I’m really happy. Some things like key bindings I’ve tweaked and so on, so I’m really comfortable now and no one can force me to use eclipse 🙂

  9. “You can have only one project per screen” have you tried “new module from existing source” ?

    Works the same way as multiple projects on eclipse.

  10. @Kostadin,

    Hahah. Definitely. I agree with you. But then, why use and IDE that makes things even worse than they already are? They are supposed to make things easier, not the other way around. But mainly it’s a matter of taste.

  11. Basicly xD my machine have low ram = i hate idea. Well, u had to boost very much ur eclipse to have it working there. I remember having eclipse, juno? Boy oh boy, it was killing my machine, while jumped to idea, was much faster. Then u tweaked eclipse and it worked better. But guess what.. i had to turn off almost everything xD and thats not by default, and for u if not by default then eclipse is worse. Finding files is much more slowly, and thats a fact, not opinion. Ctrl+arrows is again opinion. And as u mentioned, u can change it. Then easly u can import settings between version changes – dont remember that in eclipse. As for another thing i love in in idea. Is ctrl +a find action and find symbol. About the unused methods while using spring.. i am not sure but in ultimate u wouldnt have it. Even if sometimes you do, I do remember eclipse showing me hundreds of errors while they were false positive. Again, dependa on project. Above all… Clickbait article and blog goes to black list

  12. 1. Projects are not automatically built

    yeah, this is annoying for me too, but I’ve gotten used to hitting the build hotkey when I’m done typing, in some ways it’s less annoying than having builds running when I’m not ready for something to be built. Though I would like a pre-commit build hook.

    2. You can have only one project per screen. Apart from the bad usability, it’s double the memory, double the fun.

    it shouldn’t be double the memory, the jvm should have shared memory in use. I That said some things may not be appropriately shared, I don’t know.

    3. It feels less responsive and clunky.

    it can be, switch to G1, I dislike the default, hopefully when Idea moves to Java 9, they will stop custom setting the garbage collector, this will also help with your excess memory usages as GC will run more frequently, and pauses will be faster.

    4. , I have “unused methods” and “never assigned fields”

    You can tell Idea to ignore fields/methods with *annotation*, it’s just not auto-done for you, and why would it be? why should idea know about every non standard framework. Though arguably the spring framework plugin should be better about detecting this. Though if you’re using constructor injection, the fields at least shouldn’t be a problem.

    5. No search in the output console.

    You can click the console and ctrl+f, or something, it’s possible since you’re using eclipse bindings this feature is unbound (I presume you mean the output console and not the built in terminal), but it definitely has it.

    2 cents, I tried eclipse first, all I can say about it, you get what you pay for. I’d rather use vim for editing java than Eclipse. Eclipse simply has too many bugs, and too much missing functionality for my taste. I <3 that ECJ will not compile things java will, but eclipse is dead set on having its own compiler.

  13. @yuri

    I know the “console” has search. But when I run a command-line application it’s not the “Console” view that’s shown, but some other… console (terminal output). Also, call hierarchy works mostly okay, except for finding default constructor invocations.

    Btw, you can’t say something’s wrong with the user, especially when he finds another product better 🙂

    8G is still enough RAM. Unless I run 2 browsers, cassandra, elasticsearch and a game on the side, it is sufficient. That doesn’t mean IDEA consumes less.

    I find it odd how some people are triggered by me not liking their favourite IDE… This is not kindergarten, you know.

    @rmpestano these multiple projects are not so coupled to make them “modules”.

    @ the rest – thanks for your comments, appreciated.

  14. “these multiple projects are not so coupled to make them “modules”. a “module” in IDEA is the same as a “project” in eclipse. The “new module from existing sources” is the same as “import project” in eclipse.

  15. I feel exactly the same way. When I was working with an Android project, I even went through the effort to make Eclipse (not ADT!) work for Android development again to avoid the IDEA-based Android Studio.

    I know exactly what you mean with sluggishness. I think something in IDEA introduces as delay of about 100ms from you type a key on the keyboard until it shows up. I think most people have too slow nervous systems to even pick it up.

    Two more issues that I’ve experienced to add to your to your list of gripes:

    * IDEA has breaking refactorings. Even though IDEA supports more refactorings and in a more powerful way than Eclipse, IDEA may change the behavior of your code on certain core refactorings.
    * The Eclipse quick-fix (ctrl-1) is almost magical, compared to the rather pedestrian alt-enter in IDEA.

    All of the issues get even worse when you add the Infinitest autotest plugin to the mix. Running in Eclipse, on every save, all my affected tests run automatically. In effect, I often get feedback when I introduce a bug within 10 seconds, making the undo-button an easy option.

    I’ve seen IDEA-heads write code for significant fraction of an hour, just to be faced with a huge number of compilation or test errors in their code.

    I still run circles in Eclipse around the whippersnappers with their fancy IDEAs. 😆

  16. As one of my former colleagues said when observing another co-worker using Eclipse instead of IntelliJ, “ahh, I like old cars too!”

  17. I switched from Eclipse to IDEA about two years ago. It took a while to get used to the UI and the flow of the IDE design. I like it primarily because it saves me time because the supported plugins just work. In Eclipse, I would have to fiddle with Wildfly/Jboss settings each time I upgraded either eclipse or the plugins. Sometimes, it would take a while. But with IDEA, it just works right away with minimal fuss.

    Having said that, I do miss a few features in Eclipse that, to me, are more productive. For example, in Eclipse, I can debug an issue with a transitive maven dependency with the powerful search ui which lets me type in any part of the dependency and it will show me which jar is including it. In IDEA, there is a right mouse click -> Maven -> Show Effective Pom and there is also an option to diagram the dependencies but it is not easy to search for a wildcard name.

  18. The one thing that Eclipse hasn’t been able to fully implement in these years is a proper Dark Mode. The dark theme provided still seems inadequate, it looks like GEF does not support it completely. IDEA dark mode is just beautiful.

  19. > So each time you need to step out of your main project, you launch another screen. Apart from the bad usability,

    > it’s double the memory, double the fun.

    This is false, and that should be clear to a programmer, because whatever can be reused will be reused. Example: I have 2 projects open, ~850 MB consumed. Open another (quite big, relative to the others) project. ~950 MB consumed.

  20. I have used both and as much as I like IntelliJ, I dislike so much that Jetbrains adds more (new) features to IntelliJ than they can fix bugs. This have been happening with every single release and I still don’t understand why this is the case! I don’t have the ultimate edition, but the community version has been getting worst and worst. If you don’t believe me, just take a good at youTracks. You will see developers asking them to fix issues from earlier versions and asking if these bugs were fixed in the new realses (this goes for both community and ultimate)

    Ultimately, people will go with and for what they like. Personally, I don’t like to spend minutes searching online for [possible] solution when my IDE breaks.

  21. The most dumbest, worst and stupid IDE – atleast the community edition full of bugs..
    I don’t know how people has so much patience to use such a creepy and slow editor build on Swing which is not at all responsive.

  22. When I last tried STS, I was frustrated to not have cursor behind the end of line 🙂 For me it was probably most frustrating difference; I’ve found years old open ticket regarding this in the community, so I just dropped an attempt to use Eclipse.

    Also, nobody mentioned, but in IDEA it’s pretty handy to search structurally (although, each time I have to resort to examples as it’s not quite obvious how to use it).

  23. I much prefer IntelliJ over Eclipse because of all the little things it does better, eg.
    Less buggy
    Instant search
    Object values shown in a side comment at runtime
    Subjectively smoother dev process
    Git integration is much more intuitive – might be a separate plugin though
    Code completion is so much smoother
    Running Maven phases is easier and quicker

    There are a few things I miss from Eclipse but they’re quite rare, eg.
    No error/warning markers on file icons
    Ctrl hover doesn’t show JavaDoc or declaration
    Ctrl arrow going over whole words instead of each camel case word

    IntelliJ is just a much more polished product than Eclipse and the things it’s missing aren’t even that much of a hindrance.

  24. I absolutely agree with you! I’m tried many times (even in my actual project, where IntelliJ is set as a mandatory IDE), but hey guys, I really do not understand all the statements about how better IntelliJ is and how bad Eclipse is! Only a few things: tried to import a large project (gradle based) in and tried to execute just a JUnit test in IntelliJ and after hours of trying things out it’s still not working (I can run it but not debug)… in Eclipse it took me just (REALLY!!!) few clicks and everything worked out of the box!!!! GDM, Jetbrains, for a commercial product I expect at least the same quality as for open source IDEs… I’m searching since 2h to find why that silly debug button is disabled and of course I’ve the newest version of IntelliJ and all plugins up-to-date etc. so I fed up with this and switch back to Eclipse! IntelliJ really sucks!

  25. I love Eclipse, since it’s 10 years I’m using it. You can do *everything* with it. There is a plugin for any task you can imagine.

    Yes, I use IDEA also, and I kind of like it. Sometimes, I even I prefer it over Eclipse but only with smaller projects.

    I really feel comfortable with Eclipse when I have to manage big projects with a lot of modules.
    Eclipse is slower, and buggy sometimes, but if you have powerful hardware you can work with lots of plugins like MAT, C/C++, Scala, Kotlin, Groovy, Swing, AWS, Vaadin, *you say it* with a single IDE.

  26. I’ve used both professionally (Eclipse for Java and Android, Intellij for Android, Java, and Go) and you’ve hit the nail pretty firmly on the head. Intellij makes Eclipse’s memory usage seem positively slim by comparison for better auto-completion, and code hints, but fails to provide even the same level of functionality of Eclipse with regard to compilation or features. Accurately compiling a project is something I can’t easily do with a regular expression, refactoring is, and having to *delete all the built sources for a gradle project, invalidate intellij’s cache, and restart the ide* because intellij can’t seem to figure out how to actually clean and rebuild when the dependencies change seems like a definite flaw. Especially when, with Eclipse, there was just a menu option to refresh the dependencies that worked flawlessly.

    I guess if you have a hard time typing you might need those extra code hints, but honestly it seems like a half-baked ide that needs to focus more on development and less on being the reincarnation of Clippy.

  27. nice, post really feel comfortable with Eclipse when I have to manage big projects with a lot of modules.thank for shering it.

  28. I just hate intellij. right from starting weird key combinations. rename is ^+F6. Duh? Whats wrong with F2 on windows and similar for other OS?

    It gets on the nerve very quickly. Checkout old struts1 project? Now duh.. it will not autocomplete in jsp. nor import anything. mind that I am using paid version.

    checkout maven spring boot but it cannot recognize it. do a google search for how to set it .. like mvn eclipse:eclipse will immediately come up but all such equivalent search for idea will forcefed you bad idea pages only.

    also, you are very nice to idea. instead of finding issues in idea, try to find one just one feature that should make you use idea. so far I came across none. absolutely none. this is 2020 and eclipse still is far far better. also, whats wrong with idea versions…. so many dumb things to learn rather than concentrate on coding.

  29. When I started working professionally with Java I had to use Eclipse and I hated it. The UI is very counter intuitive. Also I had to install a bunch of plugins for basic functionality and it always ended with a very slow and unstable IDE. Also, I found it very difficult to navigate in the code structure. Almost 2 years later when I switched to IntelliJ and I found it very easy to use even if I didn’t know the shortcuts, and the more I used it the more easier it got with all the smart-completion and refactoring features. I recently had to use Eclipse again, and it was all the same thing again. It was like I had never used an IDE before. I’m struggling to do the basic. Also, my personal experience, projects created in Intellij are usually built with Maven of Gradle, so it’s super easy to automate stuff or change to other IDE and editors. Projects (usually older projects) created in Eclipse on the other hand are very coupled to Eclipse configurations, and the only reasons people don’t switch to IntelliJ is because it’s too hard to make it work safely.

  30. I love eclipse because it is accessible for blind and visually impaired people. They are using screen reader software to work with computers and thanks to SWT gui tool, Eclipse is 99 % accessible.

  31. Eclipse is the never ending bag of ticks that keeps on giving.
    Whatever it is you are trying to do with Eclipse, it will find a way to mess with you some how, I have worked with this * for 20 years? It feels like it, and it gives at least ONE present pr. day. Be it “not responding”, export/import breakpoints that just throws your s* away, un-escapeable modal dialogs, workbench settings that gets corrupted so you have to find a meta#%##.xml in your plugins directory and delete it … There is SO MUCH to … give you high blood pressure with Eclipse, where as Idea just effen works. That is what an IDE is supposed to do, be an extension of my capabilities, be a natural enhancement of my day to day development tasks, to enable me. Eclipse is like “SWEEP THE LEG JOHNNY” and you fall flat on your face every time.
    Companies dig it cause free. If they only knew/understood… And actually a lot do these days, its just right now im bound to Eclipse again. And I hate it.

  32. At the moment I am an IDEA user because of the job. Please let me add some pros and cons for IDEA vs Eclipse. (I would still prefer Eclipse though)
    – Gorgeous debugger, quick evaluations is so much better than in Eclipse plus evaluation history. (Hold alt and point to the expression to click and evaluate). Way more comfortable than mark block and Cmd+Shift+I.

    Well, that’s all pros I’ve been able to find.
    – Java compiler, oh my god. That’s terrible terrible terrible thing compared to ecj. In eclipse, compilation finds 99% errors everywhere (deps). In idea it compiles the code partially until hits the first error so usually you hit compile a number of times in order to find _all_ errors. Madness.
    – Artifacts, i don’t even want to tell but in general the algorithm behind actually updating the artifact is very buggy. So if you change the contents of the artifact.xml you probably have to remove generated folder in order to regenerate it. Otherwise, it will just do nothing even for rebuild.
    – Okay path variables, after changes that you have to close the project and open it again. Don’t even want to comment. I would never understand the logic behind that but my friend explained that to me.

    So in IDEA its pretty different mind shift after the eclipse. You have to deal manually with artefacts and dependencies even using maven you should have a strong understanding of the pitfalls because everything is based on the mentioned points.

    Just to be fair, eclipse was perfect few years ago, but it seems now they are hurry to develop stuff and some bugs exists (previously there were no issues in debug/highlighting but now there are many)

    So for me the mark is still on the eclipse side because of the excellent compiler, everything else is optional.

Leave a Reply

Your email address will not be published. Required fields are marked *