SOFTWARE ENGINEERING blog & .lessons_learned
manuel aldana
Manuel Aldana

December 12th, 2010 · 25 Comments

IntelliJ IDEA rocks (revisited)!

Many people ask me why I prefer IntelliJ over any other IDE. I switched to IntelliJ about 3 years ago so I cannot compare current IntelliJ 10 vs. other current IDEs Eclipse 3.6 or Netbeans 6.9. Still pair programming with colleagues who use different IDE and sometimes having to skip back to Eclipse I feel confirmed that IntelliJ is best IDE on market (my opinion is primarily based on Java-Apps). IntelliJ has recently released version 10 and improved a lot of things.

Performance

IntelliJ strikes in performance. It keeps all the files in an index. Access to and searching through all files is extremely fast, also compilation is instant (you don’t even sense it). Only the initial indexing process sometimes feels a bit slow, but version 10 shows big performance improvements on the initial index-process. I subjectively think that version 10 feels faster and UI is better responding.

Automatic in-memory compilation

Whereas for Eclipse you have to do a manual for saving a file, IntelliJ is doing it for you. Some people say, that this is “just” another shortcut to press, but I remember that it was a big relief not to do it. It really makes your fingers faster to go on with another task.

Auto-Completion + Intentions

The autocompletions and intentions are very clever (general code improvement, refactorings, type-completion, varables names, refactorings etc.). I sometimes feel that they read my mind. Since version 10 another major improvement got live: Instant auto-completion, you get suggestions as you type. I like this very much on Microsoft Visual-Studio IDEs, now finally there for IntelliJ.

Refactoring Support

Codebases should be continously improved. Structural improvements impose a risk that you break code, therefore automatic safe refactorings are extremely important. Here IntelliJ has the best toolset. It also plays nice with SCM support, when moving around files or renaming packages.

Prepackaged tool support

On other IDEs you have to install many plugins manually. On IntelliJ the most important ones are already there (maven, nearly alls SCMs) and are integrated well. I can’t remember one case where plugins got conflicted with each other.

The small things…

IntelliJ shows many little gimmicks, which put together make “the” big difference. Here an excerpt:

  • Run Unit-Tests on package basis (package focus in Project Window and <Shift>+<Ctrl>+F10)
  • Instant code execution on breakpoint (Debug-Window <Alt>+F8)
  • Instant copy file path so you can quickly jump to path on command-line (focus file/directory and <Ctrl>+C)
  • File comparisons: Excellent Diff-View. Compare with clipboard. Compare with other branch.
  • Coloring of files on tab and lines inside editor if they where changed by you without having committed. Instant notification inside editor, when file got out of synch with SCM repository (shows the commit-time and author of change).
  • Show SCM history of selection/marked codelines.
  • Working with resource-bundles. Inside code hover over a message-key and it shows you the translation instantly (like foo.bar.logout would give you little text-box “Logout”). Also refactoring the message-keys is safe (messages.properties gets upated).
  • Quick jump to Run/Debug settings (<Alt>+<Shift>+F10).
  • Automatic Code quality checks + report before SCM commit.
  • Intention ‘Create Test-Class’
  • Automatic files refresh. When switching to command line and doing SCM or maven actions, switching to IntelliJ back all files are refreshed automatically. No danger of stale data inside IDE.
  • General search for plain text or structural search.
  • Auto collapsing tool windows on losing focus. Very convenient on smaller notebook screens or generally increasing editor space.
  • Stable editor, even for very large files, e.g. it can show 5MB large XML-docs and even diffs between them (Eclipse always crashed here).
  • etc. (list goes on forever) ….

Minor annoyances

Of course with the praise from above there are still some drawbacks. I often had problems with SCM merging facilities (especially subversion), I now always do merging on command-line. When upgrading or changing plugins restart has to be done manually (at least on Linux version). Also some intentions could be added (when adding @Override above a method <Ctrl>+Enter, Pull-Up method, Extract Superclass or Introduce Interface should be suggested). For other IDE converts the different types of autocompletions are a bit confusing (<Ctrl>+Space, <Ctrl>+<Shift>+Space, <Ctrl>+<Shift>+<Alt>+Space).

Price considerations

The Community Edition is free. For Ultimate Edition which I use you have to pay some money, but regarding the productivity boosts this is simply peanuts. Budget people, please do the math: Depending New User vs. Upgrade (~1.50EUR vs. ~0.75EUR per day) how much does a developer cost an hour? Apart from making the developer happier you will also save money if only a fraction of the IDE related idle/waiting time is reduced.

Tags: Software Engineering · Technologies/Tools

25 responses

  • 1 Jonathan // Dec 15, 2010 at 2:04 pm

    In my view, the decisive argument, compared to other java IDE, is the quality of the HTML/CSS/Javascript editor. Developing web application with Intellij IDEA is a pleasure, for real.

  • 2 florin // Dec 15, 2010 at 2:07 pm

    Don’t you find it surprising when some complain about the (small) price of IDEA? Considering how much it improves your day, it’s amazing that some stay with the clunky Eclipse.

    I’m using IDEA since version 2002 and except some indexing issues, never had a problem with it.

  • 3 cobusbez // Dec 15, 2010 at 2:57 pm

    The best feature for me is jumping between methods in a class using +up or down arrows.
    I’ve been using Idea for more that 5 years (with some Eclipse and Netbeans in between) and it’s the best by far!

  • 4 martin // Dec 15, 2010 at 3:04 pm

    i moved from eclipse to idea a few months ago to try the flex and grails support and i havent looked back since. The as3 toolset is light-years ahead of adobe’s flashbuilder and the grails support is brilliant with really nice navigation between associated MVC parts.

  • 5 John // Dec 15, 2010 at 4:27 pm

    Been using Intellij since version 4… and it’s simply the best Java IDE ever made.

  • 6 Laurent Pireyn // Dec 15, 2010 at 4:27 pm

    “… restart has to be done manually (at least on Linux version).”

    This seems to be fixed in version 10: IntelliJ can now restart on Linux, too.

  • 7 Vu Duc Tung // Dec 15, 2010 at 6:15 pm

    I love IDEA so much, because as the name already says, its intelligent.

    Code Auto-completion and Intentions are awesome, it always knows WHAT language one is writing.

    —> “Aha, it does it too, cool”

  • 8 Casey // Dec 15, 2010 at 8:38 pm

    I have tried switching to Idea several times, but always switch back to Eclipse. The reasons are the same each time:

    1. Mylyn support (ability to manage contexts)
    2. Drop To Code (hot swapping at the method level).

    These seem like show stoppers to me. How can I achieve the same features in IntellJ?

  • 9 manuel aldana // Dec 15, 2010 at 9:36 pm

    @Casey:

    to 1): IntelliJ Task management is equally powerful (see http://blogs.jetbrains.com/idea/2009/05/task-context-management-in-maia/). I think jira as task-backend is supported since version 10 out of the box. Or you can achieve similar with 3rd-party plugins.

    to 2): I always thought this depends on the JRE vendor (e.g. IBM JRE adds some really nice hot code replacement facilities). Speaking specifically of servlet-container: I also remember, that Eclipse Sysdeo Tomcat plugin offered some nicer hot-code replacement. Other hot-code replacement (method body only or jsp snippets), works OK with version 10 (if you configure tomcat container correctly).

  • 10 Mark // Dec 16, 2010 at 2:07 am

    I tried IDEA when the community edition was released. I found the speed of the auto-completes and re-factoring to be much slower than eclipse. Is this a common issue? (My hardware is a Vista box with a Black AMD Phenom II X3 720 2.8GHz)

  • 11 Marcos de Sousa // Dec 16, 2010 at 8:37 am

    > I found the speed of the auto-completes and re-factoring to be much slower than eclipse.
    > VPN (Virtual Private Network) you will probably close IntelliJ after 5 minutes since you not going to have write just 5 lines. But with Eclipse it is fast. I guesse maybe because SWT versus Swing.

    I am at Mozambique where internet is slow.

  • 12 manuel aldana // Dec 16, 2010 at 9:20 am

    @Mark: This is weird. I perceive the speed of refactorings much much faster as with Eclipse.

    Maybe run a test:
    1) two identical projects (of bigger size, you can use open-source-project, with maven so setup is easier)
    2) download latest stable IDE release
    3) do several refactorings
    4) measure and compare :)

    Maybe there are Vista problems I am not aware of. SWT vs. Swing is definetely not a reason! Maybe ask on forum to help out.

  • 13 f t // Dec 16, 2010 at 9:26 am

    I’ve tried intellij several times but I don’t last long or get far…latest attempt, I couldn’t stand the font! As I get older, just having such an ugly font on linux is plain annoying…if your code is harder to read because of font choice…I mean common!

    Second point was window management…can’t remember exactly what I was trying to do…but something along the lines of placing my windows so I could look at several files at once… okay cracked open intellij…just trying to drag a tab to the right doesn’t do anything…I need to do Window > Split Vertically…okay…but now if I want to put another window over there…hmmm can’t…all this in eclipse is just brain dead easy.

    I’m on ubuntu don’t know if that’s why the fonts suck.

  • 14 Jacek // Dec 16, 2010 at 2:42 pm

    IDEA is the only IDE right now that does not support Lombok. Once you get used to Lombok in Java, you cannot go back to coding without it. I suggest the IDEA guys focus on closing that gap ASAP.

    And yeah, the Linux L&F and fonts are HORRIBLE. Instant nausea.

    Eclipse looks greap, and NetBeans is not far behind. So it’s not just a pure Swing issue.

  • 15 Norris Shelton // Dec 16, 2010 at 4:21 pm

    >IDEA is the only IDE right now that does not support Lombok.

    I just took a look at Lombok. It looks like IntelliJ already does all of that for you. ALT+Ins pulls up a menu that creates getters, setters, equals, hashcodes, constructors, etc. You can also define templates for some of these if you don’t like the code they generate.

  • 16 Gertjan // Dec 16, 2010 at 5:21 pm

    Fast? I’m programming scala nowadays, and Intellij is the slowest ide so far, i tried eclipse and netbeans (on a mac btw) not sure if it’s intellij or the plugin, but moving from the preview to the 10 version made it even slower

  • 17 raveman // Dec 17, 2010 at 3:37 pm

    Eclipse can also “do Lombok” without Lombok. Just click Source->Generate Getters and Setters, etc. ;)

  • 18 Kannan // Dec 20, 2010 at 4:01 pm

    In version 10, the instant auto completion is driving me crazy… now iam finding it difficult to code in other IDE’s/// Simply amazing Intellij.. I downloaded to test it.. but spellbound… Now when will my organization switch to InetllijIdea atleast community edition??????? Love IDEA

  • 19 Alexander // Dec 23, 2010 at 2:45 pm

    For me idea is integrated and eclipse looks for like a mix of unrelaated parts.

    Jacek, you are not right. navigate to compiler>Annotations Processor. Don’t remember how it on 9, but in 10 this is significantly improved.

  • 20 How IntelliJ IDEA Won Me Over | Galder’s Passionate Blog // Dec 26, 2010 at 10:28 pm

    [...] since I’ve been meaning to write this post and finally I found the motivation after reading Manuel’s reasons on why IntellIJ rocks. I think he makes some valid points, but in my opinion, it misses some other key differentiators. [...]

  • 21 virtualeyes // Mar 19, 2011 at 2:30 am

    IntelliJ 10.2 on Linux, gruesome, unreadable font.

    Clearly a great IDE, but if you can’t read what you’re coding, plain text editor might be the better call sadly enough. Thankfully other options exist, STS 2.6 for one, is the best usable Java IDE I have found for Linux.

    Of course, Linux is a small market, I’m sure IntelliJ looks great on Windoze and Mcdonalds Linux (OSX)

  • 22 manuel aldana // Mar 19, 2011 at 11:07 am

    @virtual-eyes: you’re not the first one moaning about fonts on linux ;) for some colleagues it is even a minor reason not to switch.

    still i never thought they were an issue, you can choose the font setup (size, type). In IntelliJ you can also tweak the font-setup. the appearance (because system font) differs slightly but I don’t think it looks ugly.

  • 23 johanmynhardt // Apr 2, 2011 at 7:09 pm

    Hmm, font’s being a reason not to switch I think is overkill. From time to time I alternate between GTK+ and Nimbus LnF, the fonts seem pretty good to me. So… I don’t know what the fuss is about.

  • 24 Lorene // May 3, 2011 at 3:19 am

    The forum is a brihtger place thanks to your posts. Thanks!

  • 25 Paul // May 16, 2011 at 11:04 am

    @virtual-eyes
    To make the fonts look better in linux, try adding this to your idea.vmoptions file:

    -Dawt.useSystemAAFontSettings=lcd

Leave a Comment