Monday, January 16, 2012

Intellij vs. Eclipse

Choosing the right IDE can make you or break you as a coder. Most developers would be lost without the comfort of their preferred IDE, which takes care of classpath, make files, command line arguments, etc. The problematic dependence on the IDE, while very beneficial, is off topic and a discussion for another post. We concentrate on 2 main platforms, Eclipse and Intellij Community Edition, comparing them, mainly in the Java SE context. Disclosure: Nadav uses Intellij on a regular basis, and Roi uses Eclipse.

Walking through history lane, Eclipse is around since 2001, while the real major release was Eclipse 3.0 in 2004. It began as an IBM project, but current members of the Eclipse Foundation range from Oracle to Google. Current release is Eclipse Indigo 3.7, and it is licensed under the Eclipse Public License. Intellij is part of the JetBrains, which was founded in 2000 as a private company. Intellij for Java was first released in 2001, and the Community Edition supports Java, Groovy and Scala, and its free and open source under the Apache 2.0 license.

We use Java as our main development language. Each developer chooses its own IDE. War between the IDE’s is waging around us, starting from our school days and University, and extends to our current workplace. While each side is certain in his righteousness, we believe there is no right or wrong answer, but rather choosing the right platform for your needs and challenges, taking into account the kind of programmer you are. We would like to share our own experience on when to use each. So here we go:

  • Plugins: Eclipse marketplace offers 1,276 plugins, and the Intellij Plugin Repository offers 727 plugins. This difference is not to be taken lightly, since plugins for new technologies will usually be developed mainly for Eclipse (e.g. Android, Drools, Activiti, etc). Moreover, Eclipse is easier to extend. When working on a specific technology most chances are that if a plugin exists, it will be an Eclipse plugin.

  • Multiple projects: This is an Eclipse winner for sure. It has the ability to open multiple projects in the same window, giving the coder control over dependencies and relations. Intellij has an option to open one project with multiple modules, but we found it to be cumbersome, and in times a little buggy. If you are going to use a lot of projects together and hate to switch windows, Eclipse is your choice.

  • Multiple languages: We have stated that we will only examine the Intellij Community Edition that supports Java, Groovy and Scala. However, if you plan to create a Python server, combined with Ajax & Html, joint with a java web server, or any other exotic language combinations, than Eclipse is your choice.

  • Code completion & inspection: While Eclipse has the ability to add plugins such as checkstyle, this one definitely goes for Intellij. The default code completion and assistance in Intellij is faster and better. If you are a rookie developer, Intellij can improve your code.

  • Usability: Intellij user experience is much easier to grasp. The learning curve in Intellij is by far faster. It seems using Intellij makes developing easier and more natural. Dropdowns, code completion, quick view, project wizards, etc, are all possible both in Eclipse and Intellij, but the experience in Intellij is much more satisfying.

  • Performance: The more plugins are installed on the IDE, the more heavy it is for your computer. However, saying that, Eclipse handles very large projects faster. Moreover, both of the IDE’s seems to be RAM junkies. Projects usually open faster in Eclipse, as Intellij indexes the entire project on startup, but while working on an existing project, Intellij works smoother. For example we have a huge SOAP project, which is impossible to work on with Intellij, so some of us even learn Eclipse just for that.

  • Repository integration: Both of the IDE’s have SVN\GIT\etc plugins. No doubt Intellij’s plugin is more reliable, has better GUI and easier to use.

  • GUI builder: We found that the built in Intellij GUI builder is more comfortable, and as mentioned above, usability wise its easier to learn, and more enjoyable to develop.

For a conclusion, a programmer should be able to find the right tool given a specific task. This means that one should be acquainted with both of the IDE’s, in order to face the challenge with the right tool.

39 comments:

  1. Why not compare to a real IDE? i.e. emacs

    ReplyDelete
    Replies
    1. Because emacs is next to useless as a Java "IDE" - and thats *if* you get JDEE or semantic working.

      Delete
  2. We decided to write from our experience, and this are the 2 main IDE's used based on that. Emacs did not qualify to the finals :)

    ReplyDelete
  3. You can also look at that like comparing Android to iPhone. In iPhone all is clean, easy to learn and doesn't change (IntelliJ) while on the Android all is messy, can be configured how you like it and changing all the time (Eclipse).

    ReplyDelete
    Replies
    1. They say that everything you can do with Intellij, you can also do with Eclipse, though it could be less clear and easy. But is it true the other way around? Is there something you can not do with Eclipse that you can do with Intellij?

      Delete
    2. Agree, Everything is confused in Eclipse...
      NetBeans is much more cleaner (but less powerful)

      Delete
    3. stef, Eclipse is not a plug and play IDE, I agree on that, but the at the end of the day it does the trick. Sorry for not reviewing NetBeans, we worked with it before, but enough to have a real say.

      Delete
    4. and open too

      Delete
  4. Eclipse is Open and Free.. so it wins!... no more arguments please!

    ReplyDelete
    Replies
    1. That was not the post intention, We tried to say that there is no one answer. Moreover, the Intellij version we reviewed is free as well.

      Delete
    2. So something being free automatically means you should prioritise it? Erm, that doesn't make any sense.

      Delete
    3. BramVdb: IntelliJ Community is open and free just as well.

      Delete
  5. I used Eclipse for years as a JEE developer. Recently, a co-worker convinced me to try out IntelliJ Ultimate (My company bought it for me). I don't think I'll ever go back to Eclipse. I feel that IntelliJ allows me to do what I need and I never feel like I'm "fighting" my IDE as I always felt with Eclipse.

    ReplyDelete
    Replies
    1. I would be happy to hear how IntelliJ Ultimate changes the picture as we showed it...majority of our points is still valid

      Delete
  6. "Intellij has an option to open one project with multiple modules, but we found it to be cumbersome".

    You cannot write such subjective things when pretending to compare two IDEs: what exactly do you find "cumbersome" ?

    Also, you say that "[Eclipse] has the ability to open multiple projects in the same window, giving the coder control over dependencies and relations", implying that Intellij doesn't support this.

    Unfortunately, you forgot - or was it on purpose ? - to mention the fact that Eclipse "projects" are called "modules" in Intellij, and that Intellij allows opening multiple modules in the same window, giving the coder control over dependencies and relations (yes, I'm using that same wording as you).

    And yes, I'm an Intellij user ;-)

    ReplyDelete
    Replies
    1. Nope. Idea's modules are modules of one big project. But in Eclipse projects - different independent (or dependent) projects. To open different projects (real projects, not modules) in IntelliJ you must open different windows (instances) of Idea.

      And yes, I'm an IntelliJ and Eclipse user ;-)

      Delete
  7. The biggest problem with Intellij plugins is that a number of them haven't been updated in a long time (e.g., you're at version 11; you'll find things written for version 8.) Sadly current and old plugins all download, and you have to hack through the chaff. Eclipse has old plugins too, but they don't come from their official update site.

    ReplyDelete
    Replies
    1. The thing with IntelliJ, is that there are several "plugins" in eclipse that are just not necessary in IntellliJ because they are provided by default.

      Also, what bothers me about this review, is that no version numbers were mentioned. I have been using IntelliJ for about 7 years now, and it really is amazing how many features were added just in the last 2 years. For example: the smooth integration of JavaFX, class diagrams, ...

      Also, as mentioned in the review IntelliJ performs a lot of indexing at startup. And the result is that IntelliJ has extremely strong refacturing and code analysis options. Just two simple examples: if you select a couple of lines of code halfway a function, and press Ctrl-Alt-M, then it will move that selection of code to a new method. What is amazing, is that it automatically creates a fitting signature to pass external dependencies as parameters to the function. Also, if one function calls another, which calls a third function, the 2nd function is called a "middleman function". You can remove the middleman function with just one click.

      Delete
  8. Intellij ultimate hands down. Android was mentioned as a plugin developed primarily by the vendor, Google, inferring that the development experience is better for Eclipse. With the same free version you can create android applications with much ease compared to the eclipse experience. The ultimate edition does html, javascript, css better than Eclipse. Give the ultimate a tried, 30 day trial and then think about it. I've been an Intellij user since version 2.5

    ReplyDelete
    Replies
    1. We did not cover IntelliJ Ultimate knowingly. And as I have written above in my reply to Henry, we will be happy to hear exactly how did you experience change in the Ultimate edition.

      Delete
  9. and interesting discussion on the matter is also going on here:
    http://www.reddit.com/r/programming/comments/okzv4/intellij_vs_eclipse/

    ReplyDelete
  10. I was trying to shift to eclipse several times during 7 years of professional development, but still using Intellij Idea.
    Of course it is a matter of habit, but I always found something wrong in Eclipse.

    ReplyDelete
  11. I have been using IntelliJ for some Years now and it is easy to use and Code Completion is perfect. I think where IntelliJ scores over Eclipse is
    1) IntelliJ is very good when we have to view decompiled Third party class file Source code when clicking in IDE links to those classes.
    2) Eclipse also does not show / jump you to Spring Beans dependency classes from its config files, IntelliJ does that !
    3) We can click/ Jump to JavaScript functions definition in JSP / FreeMarker/ JS / CSS files in IntelliJ. Eclipse does not seems to have that (Correct me if Wrong for Eclipse)
    4) IntelliJ Conflict-Merge is far EASY-ON-THE-EYES, and nice and I have not got any errors while doing that. And Yes, IntelliJ SVN plug-In is very easy and comforting. I have seen issues in Eclipse SVN Plug-In while doing commits when files are committed/ updated/ modified using Tortoise SVN plug-In and then Eclipse SVN Plug-In is used.

    But. Having said that, In most interviews (where they will ask you to code or do Pair Programming exercise), they ask for familiarity with the Eclipse IDE :-( If you say I want IntelliJ, they might have difficulty getting it for you as most Orgs. have Eclipse because it is Free, and Does Not require an Install (Admin rights on test machines/ Security Issues)

    The commercial Eclipse (MyEclipse Blue and MyEclipse Spring Tool Suite (STS) have made Spring Scaffolding and Enterprise Spring development much easier.

    Preference wise - IntelliJ for its Ease. Non-Cluttered IDE S-P-A-C-E. No-Nonsense Plug-Ins. Team development features. Tight Integration with CVS, SVN, GitHub reps.

    I do not know about the state of development in Eclipse for support of statically types languages and Functional Programming support, but IntelliJ (With its Kotlin language) and Functional Programming support is already making big strides in the next level of Java / JEE development.

    Also, nowadays, I think the IDEs are more picked up by how they provide support for the latest frameworks via the "Add Framework Support" features on existing projects.

    ReplyDelete
  12. The conclusion is too politically correct :) C'mon guys, make up your mind! :)

    BTW, why don't you compare to NetBeans? Not that I would be the NB fan, but just recently experimented with the autocomplete options and NB is much closed to IntelliJ in that sense than eclipse (Eclipse isn't too smart for this unfortunately)

    Also,

    "Intellij has an option to open one project with multiple modules, but we found it to be cumbersome".

    this statement is tooooo subjective. It is just a matter of terms - workspace=project, project=module - simple.

    ReplyDelete
  13. I tried to shift to eclipse during last month for Python professional development using PyDev, at the beginning it was difficult but after a while comparing to Intellij Idea found or used to same functionality .
    Of course it is a matter of habit, but I still thinks Intellij much more intuitive comparing to Eclipse.

    ReplyDelete
  14. I'd be interested in the impact of the license and user agreements that apply on IDEs'. Free is nice, but as a professsional in SW Development/Verification/Deployment I need to ensure that the tool allows the appropriate deployment for my employer. Eclipse introduced the SUA which restricts its use for "open source". IntelliJ and NetBeans allow commerical "development". (Not the community IntelliJ).

    Open source implies that you have to publish your code, even if you are developing for yourself.

    Things do depend on if you are happy with open source or not. But most employers outside the Eclipse Foundation are in a bind if they stick by the rules.

    ReplyDelete
  15. "Eclipse marketplace offers 1,276 plugins, and the Intellij Plugin Repository offers 727 plugins" - Yes, but Intellij has a lot of stuff integrated in a very intuitive way (like proper Maven and Spring support) that would require difficult to grasp and often buggy, incompatible or poorly documented plugins in Eclipse.

    Even the free version of Intellij IDEA is much better than Eclipse will ever be. Intellij actually thinks for you. If you have a GWT project, Intellij will recognize it and ask you if you want to enable GWT support. If you have a Spring project, Intellij will recognize it and support you with code completion to a point I thought was impossible. Same goes for JPA, Maven, etc, etc.

    The difference in experience is this: Intellij will think for you and ASK you if you need support, because it noticed you are using a particular technology, and once you opt-in it will be a delightful experience and you will be amazed by its level of code completion and inspection and how easy it is to find additional tools. With Eclipse you are constantly wondering how you should TELL Eclipse you want support and where you can find the documentation that tells you how to tell Eclipse what it already could and should have known the second you opened your project.

    I am a fulltime Java developer and used Eclipse for 4 years and never looked back after I started using Intellij.

    ReplyDelete
  16. I have used Intellj Ultimate for more than 5 years. and I never plan to move to Eclipse until I start working with Google GWT. Google is the favoring Eclipse with all their development documentation and staff. Intellj is having hard time catching up.

    In general I agree that this comparison is similar to comparing iPhone v. Android phones. If you are eager with new plug-ins and Google products go for Eclipse and Android. if you want stable and slowly adopting new staff - then intellij and iphone

    ReplyDelete
  17. "For a conclusion, a programmer should be able to find the right tool given a specific task. This means that one should be acquainted with both of the IDE’s, in order to face the challenge with the right tool."

    way to dodge the question at hand....

    ReplyDelete
  18. I recently had a chance to compare IntelliJ 11.1.4 vs Eclipse 3.7 in a big project (>>100 Maven modules), and I have to say that Eclipse lost big time. The workspace is broken every half hour (or VCS update) and does not compile until randomly clicking refresh, resolve Maven dependencies, update project configuration and so on (sometimes it never compiles, or I can't rename a private method, cause it says that module "NotRelatedAtAll" is out of sync and no refreshing or dependency resolution can change that). Besides that building the workspace is so sluggish, that I cannot have the super module I'm working on (maybe 50-100 submodules) imported at once, but always have to choose a subset, possibly breaking other dependencies. Now for IntelliJ, it can import the whole super module flawlessly, updates the indices once, and then lets me test drive the whole part with almost no wasted time for recompiling useless stuff, so definitely thumbs up for Maven integration. Besides that VCS integration is so much better in IntelliJ, it just works, and it is a 3-way merge!!! (only compared to Subversive and EGit)
    IntelliJ marks all occurrences of regexes and shows their replacement immediately when doing search and replace.
    And after all, it does not suggest moronic autocomplete options like "List list = new A(rrays)" or similar, c'mon. Besides that if the type T in List is not imported yet, and neither is List, then you cannot autocomplete on the type??? WTF
    It's just little things, but having worked with both IDEs for years, when coming back to Eclipse, I see myself making stupid autocompletes all the time, because I just don't expect Eclipse to even offer me such a stupid possibility...
    Oh, in case I haven't mentioned, I consider IntelliJ superior in most ways ;-) (except plugins and extensability)
    And the ultimate edition also offers very good JavaScript support that I could never find in Eclipse.
    Ah, and one more thing, in IntelliJ I don't need stupid favorites to do static imports for my unit test frameworks and similar, IntelliJ just offers me stuff like assertThat(...) as a static import, which I consider also NICE ;-)

    ReplyDelete
    Replies
    1. I had the same experience... I'm working in a big project and Eclipse was giving me headaches, so I ran away from this useless crap.

      After that I migrated to Netbeans 7.x and I was satisfied with the results until I found IntelliJ 12: impressive.

      Now I'm working with Android development too, and the Intellij support its so much better than eclipse.

      Now I'm 2 years away from drugs.

      Delete
  19. Hi All,
    I had used Intellij,Eclipse and Netbeans in my opinion if it comes to J2EE Projects netbeans is really a champion and its also helpful for creating a basic template for every framework.and if you have experience in eclipse you can work on all java environment it is the only ide that have wide variety of a plugin architecture.

    ReplyDelete
  20. "Intellij user experience is much easier to grasp. The learning curve in Intellij is by far faster. It seems using Intellij makes developing easier and more natural."

    Not really. IntelliJ's standard settings won't even show JavaDocs on code completion. Often IntelliJ functions are or seem to be only accessible by keyboard shortcuts, for example the class hierarchy. In my opinion it's the other way around, Eclipse is easier to learn, but IntelliJ provides much more features without plugins.

    ReplyDelete
  21. I've been using Intellij since its introduction and I never switched back to Eclipse, nor have I ever seen a co-developer switch back to Eclipse after having used Intellij.

    There is an important omission in this article: general user friendliness. Intellij is a breeze to work with compared to Eclipse. In Eclipse you have to install and configure loads of third party plugins that are often not even half as good as their Intellij counterparts.

    When you fire up Intellij and open a project (ANY project! Eclipse, Maven, doesn't matter) it will detect the technologies you are using, like Spring, Hibernate, Maven, etc and enable the appropriate 'facets' so that Intellij can further assist you with very specific code completion and other helpful functionality that is related to that technology.

    In short, Intellij feels like walking into an airport, having a coffee, departing on time and arriving well rested at your destination, while Eclipse feels like being stuck in traffic on your way to the airport all the time.

    I find it hard to imagine that anyone would want to use Eclipse. Oh, its free of course. That is probably the reason.

    ReplyDelete
  22. It is just like the Canon vs Nikon battle.
    Both are good.
    Over time one might be better at some work and the other latre on take again the advantage.

    For large corporations, the decision has to ba taken to have all developers speak and share the same experiences and that's the only relevant point to me.

    ReplyDelete
  23. Eclips is for FAT people.

    ReplyDelete
  24. I have always used eclipse and recently started using Intellij (free edition) and I would like to point out that i do not agree with the performance comparison in the article.
    IntelliJ seems to be a lot faster then eclipse in my case.
    When my projects get build in eclipse it takes several minutes, as with intellij it does never take more then a minute.
    Also eclipse thinks my project has te be build all the time (I checked of automatically build for that reason, but now building takes ages when i click build).
    I have to say it was a bit frustrating when going back to Eclipse, allthough i would definatly still use it for smaller projects.

    ReplyDelete
  25. I like Codelobster PHP Edition
    This IDE works much faster and it is free.

    ReplyDelete