Splunk Completes Acquisition of Plumbr Learn more

To blog |

Why we dropped Eclipse in favour of IntelliJ

September 12, 2013 by Nikita Salnikov-Tarnovski Filed under: Java

As background – all of us in Plumbr have been using Eclipse for as long as we can possibly remember. But when I just looked around in the office I saw our whole team being converted to IntelliJ IDEA users. So what made us jump the old free-to-ride warhorse and go with something we need to pay up to $600 per seat for? If you bear with me I will give you several reasons why you might also consider the move.

For years, our friend Anton Arhipov has tried to convince us. He kept failing until he demoed something as simple as ALT+ENTER. Based on the documentation it is not doing much – just using the suggested quick fix. But this feature is backed by something that makes many other IntelliJ features so much more pleasing to use.

Indexing. Whatever the JetBrains guys are doing under the hood, their indexing is blazingly fast and supports different content. These fast indexing benefits are paying off in several different usability features:

  • As-you-type code smells and warnings. In Eclipse you have to launch analysis manually, in IntelliJ you will have the feedback on those immediately.
  • Code completion and code generation support offered is orders of magnitude better due to the very same indexes.  I guess all of you remember the infamous java.awt.List autoimport on Lists which took years to be removed from “top recommendation”. No such annoyances when using IntelliJ.
  • The fixes offered by the ALT+ENTER make sense in so many occasions that it already starts to frighten me. In some cases I have suspected they have an Amazon Mechanical Turk watching me as I type – the recommendations are just so good.

IntelliJ shortcuts

Language support. They way IntelliJ is behaving on different content types just feels natural and uniform. Whether I am editing a Java, Javascript, HTML or a JPA query – the syntax support is really good and the operations I perform are uniform across languages. I do not need to learn a set of new shortcuts each time I switch away from Java. And the code completion support, especially in Javascript, is something I failed to see in Eclipse. It just wasn’t there.

Perspectives. Or actually the lack of perspectives. Eclipse tried to offer “the best perspective” for me while I was dealing with different issues at hand. For me it meant that my screen layout got mangled each time I switched from development to debugging or refactoring. It always annoyed me and now having just one extra context-dependent window for the additional operations I feel I have a solution I am actually enjoying

Out of context – we know. What if you would always know what you need to change in your code when it doesn’t perform in production? Try Plumbr – automatic root cause detection of Java performance issues.

Debugger. It is blazingly fast. And I will not even start on the Eclipse debugging perspective, which has to be someone’s evil joke driving me nuts every time I recall using it. And the feature set is also more pleasant, my favourite being the “Smart step into” which allows me to select which method to step into, if I have a code line with multiple method calls.

Support. Eclipse is built by a foundation. This is not bad per se, but the different interest groups in this foundation make the governing and execution somewhat difficult. For me as a developer it results in support tickets disappearing into a void for weeks. No such problems with IntelliJ where I always have my questions answered in time and without bouncing the topics between different areas of responsibility.

Several minor things I will only list some of the recent favourable discoveries:

  • JPA query syntax correctness is being checked as you type. Has already saved me a day or two by not having to discover the errors in runtime.
  • Property files integration. While in a property file, I can see where this property is being used in the source code and I can detect unused properties immediately.
  • Integration with different browsers. To test my HTML, I can launch different browsers right from the IDE itself, so I do not have to go the extra mile (ok, an inch) and open them by myself.
  • CSS colors are visible right from the IDE, so I do not even have to check the browser for this.

IntelliJ property file support

So I can only ensure that after your monthly trial will end there is no going back. But to be fully honest, there is one thing I do miss from Eclipse as well – “Save Actions”. If you haven’t used it, this is a possibility to create triggers being launched when you press CTRL+S. So for example I can have the imports organized, code formatted and @Override annotations added without any effort on my part. Haven’t found the IntelliJ equivalent for this one so far.

So, even though we cannot actually measure if we are more productive after the conversion, we are somewhat happier with the tools at hand. And we do believe that a good craftsman has to have the best possible tools in order to create the best possible craft.

If you enjoyed the content and wish to get updates on what the craftsmen are up to, subscribe to our Twitter feed.

 

ADD COMMENT

Comments

I dropped Intellij as soon as I learned about Mylyn. Intellij bombard us with features but they ignore the feature that would truly help. Why do we have to suffer every day with information overload, looking through billions of files ? until intellij fixed that, I will never even look at it again.

Mikkel

I totally agree. Mylyn is a killer feature in Eclipse.

nidget

Having used both no for years, I think you are eventually going to regret it.
IntelliJ seems more stable but I have found that it’s just not.
Most of the annoyances are silly things, or bugs in the application that Eclipse just doesn’t have. Most people who switch can’t admit it to themselves when they discover these little things.

Yes, sure, I know Eclipse can get messed up and stop working properly, but it’s fixable and doesn’t happen with a good setup, and actually didn’t really happen to me at all, once I understood how to set it up. With IntelliJ, I don’t have the same experiance. When it breaks it’s not fixable.
Today, I have finally had enough of my curser jumping to another part of the file whenever I hit cmd+s, I mean seriously, that’s a pretty foobar bug.

I long for the old Eclipse days, when my editor didn’t invent things to go wrong, and refactoring made sense.

Brill

I agree. At my previous job, I used Eclipse exclusively, but had heard many good things about Intellij, so when I started a new job I was really excited that they were using Intellij. I thought it was awesome (and I still do), but after getting to know the IDE, I really miss the simplicity and consistency of Eclipse.

Matt

The simplicity of Eclipse. That’s something an Eclipse user would never say. Especially not after using IntelliJ

Kaba

I used Eclipse from 2005 till 2012. Then moved to IntelliJ. No turning back. It’s not even about features or ease of use which you can get by, given a certain learning curve. But it’s a matter of overall stability and efficiency as a developer. With Eclipse, I found myself wasting LOTS of time solving IDE issues, updating plug-ins, suffering from update-deadlocks because plugin-A needs to be updated due to a bug but you can’t because plugin-B depends on it and there is no update yet for B which can work with the update of A so you’re stuck. Or you have to give up the feature that plug in B gives you which is then a dependency of feature C jara jara jara. Short, eclipse has become worse with every release and a true pain in the ass.

Eclipse used to be great around 2005-2008 but then all kinds of issues came up with maven integration and WTP etc which made life hell. And no, the commercial counterpart which comes with Websphere was no better, on the contrary. This rational app developer was the reincarnation of the digital hell. With IntelliJ, the issues are few and when logged, these guys respond within the hour mostly. That’s worth a few bucks a year to me, just to be as good as free from daily frustration eclipse delivered. After all, people want to get things free. Why pay if you don’t have to, right? When people and companies rather pay money instead of using something that is totally free, this should ring a few bells.

Lorenzo Schoovaerts

I can see the benefits of IntelliJ, but it’s only relevant when you go above and beyond what you normally need Eclipse for. I have to Android Studio, and frankly the UI and shortcuts are complete bollocks. I have to contort fingers to do what would otherwise be elegant straight forward keyboard handling . Yes, you can re-bind the keys to something more else, but the collisions with IntelliJ make that ridiculously inconvenient. I know you can use the “Eclipse” bindings for key mappings, but this is still woefully in adequate. Finally, the debugger.. What a pile of crap! If you know please share, but if you want to pause debug output, you have to yank the cable from the device ?!?! WTF … How hard is it to add a pause button in the debugger.. Overall, I find the IntelliJ un-intuitive, but I so seem some value in its features, but frankly, you only need it, once you go beyond conventional development with Eclipse.

John Doe

“In Eclipse you have to launch analysis manually, in IntelliJ you will have the feedback on those immediately.” – for me it is the opposite Eclipse warnings are immediately here when you type the code, in Idea I need to launch separate and long inspection process.

Ivan Sopov

IntelliJ intellisense as of 2005 was outstanding. The problem with IntelliJ is that it hasn’t gotten any better *since* 2005. For example, they still don’t have quotes right. If you are at the end of a statement and want to add quotes to what you just typed, the standard procedure from the last character is, 1) type quote, ok, you have 2, 2) delete quote, ok, you have 0, 3) type quote again, ok, you have two! 4) ctrl-back to the beginning of the quote, type quote, ok, you have 1 at the beginning, 5) ctrl-right to the end and delete the quote, which only now works, despite the fact that the probability of backing to a line and putting an end-quote means you have zero probability of wanting to start a new quote to the right. This is a massive loss to Notepad, and there are several others like this that have been like this for years. I am *this* close to switching to vi.

Jeff L

Nice post, despite of all its good thing, I have yet to try IntelliJ, how about its Java 8 support, is it better than Netbeans?

Thanks
Javin

Javin Paul

I’m using both IntelliJ and NetBeans (abandoned Eclipse long ago), and most of the times I prefer NetBeans. It’s just prettier, feels cleaner, and has a better Gradle integration, which is what I need. IntelliJ is great for Clojure, though.

pron

Does it have incremental compilation yet? While I have found the various other tools of IDEA faster the thing that kills me is waiting for the compiles when I go through a green/red cycle for TDD. In eclipse its instant, and with the right plugins its automatic. In IDEA the compilation doesn’t happen on file save (because well it doesn’t have it) but rather on the compilation which is largely driven by an external tool like Maven. That extra time over and over through the day really adds up and its the only thing stopping me making the transition and has been for years.

Paul Keeble

Yes, it has. Save happens automatically, and so does compilation a moment after that.

iNikem

I think nobody has enough time to become an Eclipse expert and Idea expert to convince other people that this IDE is better than the other.
I think I was lucky when I was forced to use Idea after only 2 years of using Eclipse and now Idea goes with me everywhere. Of course it will be difficult when you join a company where everything is configured to use with Eclipse and when you don’t know about the application structure, but when you understand the application structure, there’s nothing difficult to use that highly-configured-to-use-with-Eclipse application in Idea.

However, in my current company which also uses Eclipse, an Eclipse plugin is used (I don’t remember the plugin name but I’ll explain what it does later) and I haven’t found any way in Idea to do something similar. This is my situation: there are 2 different source code directory named V2N and V2I. V2N is a web app while V2I isn’t. If we want to build our web app with ant, we do like this: compile V2I and pack it in a jar, say V2I.jar, then we compile V2N with V2I.jar in the classpath and when the V2N web app is built, V2I.jar will be in /WEB-INF/lib. Now the challenge with Idea is that there are some duplicate classes in V2N and V2I (i.e. the same class names in the same package names). In Eclipse plugin I mentioned above can tell Eclipse that if Eclipse sees a duplicate class in V2N and V2I, use the one in V2N which makes sense because at the end the duplicate class in V2N will be in /WEB-INF/classes while the duplicate class in V2I will be in /WEB-INF/lib/V2I.jar. Idea always refuses to compile because of duplicate classes even when I go to the Settings | Compiler to ignore some .java files.

If anybody understands what I am talking (English is not my native language) and has any idea for my problem, please help. I’ll be very grateful.

LG Optimusv

First solution would be, obviously, to name different classes with different names 🙂
More seriously though, are V2N and V2I two different modules in your IJ project? When V2N depends upon V2I. I would expect IJ to handle this situation gracefully. If not, then may be you should file a bug to IJ. Or may be Andrey or arhan can comment on this?

iNikem

I can setup the Idea project so that V2N and V2I are 2 different modules and V2N depends on V2I, but will it solve the duplicate class issue? I’ll find out later.

LG Optimusv

What about all the MDA (i.e. ECORE, OCL, Acceleo, QVT, etc.) and DSL (i..e Xtext) plugins which are very well supported in Eclipse ? is there anything equivalent in IDEA?

lowcoupling

I used intellij for years (had to because thats what they used at my job at the time)..I learned all shotscuts, I did all in my power to be comfortable with IJ.
But it was just a huge pain. When we’re talking pure editing, navigation, refactoring..nothing out there even remotely compares with Eclipse.

Tom Dane

“But it was just a huge pain. When we’re talking pure editing, navigation, refactoring..nothing out there even remotely compares with Eclipse.”

Are you sure you actually used IntelliJ and not something else? Just asking, because the things you praise Eclipse for (especially “editing” and “navigation”) is where IntelliJ beats any other known IDE hands down.
I can tell you as former Eclipse user, that navigation in IJ is light years ahead. Just try to pull your mouse cable out and navigate the whole of Eclipse with your keyboard only. Stuck, eh? Yet in IJ you can do just that.

pav Lechev

Because in 2016 not having a mouse is an issue… yeah right. and then again you can navigate eclipse just with your keyboard.
e.g Ctrl + T, Ctrl + O

Vladimir Putin

I’ve used both for years and I still prefer Eclipse. I cant really see where intellij outshines Eclipse.
One of the thing that really bothers me with IJ is autocomplete and import of classes.
For example, when I want to import Customer, I simply start typing customer, and Eclipse will show it in its autocomplete popup and import it if I so chose.
Intellij doesnt do that. You will have to type the entire word Customer then it will ask you “Do you want to import Customer ? Hit alt enter”
This is just silly. You would expect that typing “Cust” and hitting ctrl+space would bring you a list of classes starting with “Cust” from which you can select.
That is a serious problem in larger projects where you don’t remember the exact name of a class.
This is just one thing that bothers me with IJ..there’s tons of small nuisances like that.
Eclipse simply let’s you code blazingly fast. IntelliJ feels slow and sluggish.
In eclipse I reach everything using only the keyboard (or most everything). In IJ I more often than not have to use the mouse.

And finally..MYLYN ! Why the hell didnt they make a Mylyn plugin for IJ ?
task focus is extremely important in larger projects.
Eclipse had it for years, IJ simply ignores it. This is a much more needed feature than bettter Javascript debugger or whatever non crucia feature they decided to concentrate on.

After a day of developing with IJ my hands and head hurt.

Tom Dane

Wow, we have some problem here.
1. If you start typing “Cust” then IJ will suggest you possible autocompletions even without pressing any shortcut. You can select the correct one with arrow key and press Enter. IJ will add import as well.
2. IJ has an order of magnitude more shortcuts than Eclipse. You can do everything without mouse. Try Key Promoter plugin for learning those shortcuts.
3. IJ has tasks, changesets etc. Not Mylyn per se, but it works perfectly. And has integration with JIRA at least.

In writing code IJ is definitely faster than Eclipse.

iNikem

1) Ehm..no. Not for classes not already imported in your file
2) Thats a bold statement. Theres a shortcut for everything in eclipse
3) Yes and that sucks compared to mylyn.

Last statement is just your subjective opinion.

Tom Dane

1. Ok, true. For classes not already imported you have to press Ctrl-space. So just like in Eclipse.
2. Your statement was that you have to use mouse in IJ, because it has not that much shortcuts as Eclipse does. I claim that I do much more with shortcuts, not mouse, in IJ, that I used to in Eclipse.
3. That is subjective 🙂

iNikem

Simple test. Without a mouse, please jump into the project view from the editor, and come back. Then to some other view (let’s say, structure view) and come back to the editor? Good navigation, huh?

Eclipse is _very_ limited in shortcuts for Navigation. The best you can do – use Ctrl/Cmd+F7. Of course you can have a shortcut for everything of you assign it a shortcut.

arhan

Outline : ctrl + O..

OR
Alt+SHift+W left you select navigator, outline, project explorer or whatever you have open.

Tom Dane

Or you can configure your key combination under settings->keys, “Show in explorer” “Show in navigator” etc
These are not bound by default so you would have to do it yourself

Tom Dane

“You would expect that typing “Cust” and hitting ctrl+space” << very bold and subjective statement. I could say the say exactly the opposite: "I would expect hitting Alt+Enter"
And it is just silly to complain about this kind of things. If this kind of things disturb you – it is just not your IDE, nothing personal.

Mylyn is as opinionated as IntelliJ is. A lot of people would try it and run away. So it is not surprising that it doesn’t exist in IntelliJ. There’s a light support for contexts though.

“After a day of developing with IJ my hands and head hurt.” << well, you just didn't get your hands around it. Just stay on eclipse 🙂

arhan

Mylyn is no opinionated..theres a difference in seeing 5 relevant files in your tree view and seeing 2000. Thats not an opinion.
That you want even give in to this just shows how biased you are. Intellij can do no wrong.
I’ve tried intelli, really gave it a chance. Ive years experience with it for Christ sake ! And still I prefer Eclipse.
Im not trying to win someone over but this little glowing review needs a counter argument. I

Tom Dane

Please note, that this is not a review. Title says: “Why we prefer IntelliJ”. By definition it is very personal list of highly subjective things 🙂

iNikem

Each to his own I guess.

Tom Dane

Well, those guys have been using Eclipse for 10+ years. The preference comes from _what_ you’re doing with the tool and how it supports your style of work.

arhan

Anyway they could just MAKE mylyn for Intellij. Its not like it’s rocket science..then people could use it or not.
A little faster UI and mylyn, and IJ would be ok in my book..and a lot of other Eclipse users as well.

Tom Dane

For Mylyn it was asked if it could be integrated and it seems it is not going to happen. Or if it will – in a little different form than Mylyn

http://youtrack.jetbrains.com/issue/IDEA-74594

As for the UI – it has been a problem in the past for me also. But in recent versions it has become quite fast and responsive – can’t see it being an argument any more.

arhan

“theres a difference in seeing 5 relevant files in your tree view and seeing 2000”

Here’s my receipt to this. I set number of visible tabs to no more than 5-6 so that the would not wrap. I use only the shortcuts to navigate recently edited/opened files. Mylyn is no use in my workflow.

I haven’t tried Mylyn in recent years. Maybe it is not _that_ opinionated any more. However, when I tried to get my head around it some time ago, I figured you need to use special shortcuts so that it could track the context correctly. This is why I say it is opinionated.

arhan

Yea but if you quickly navigate a bunch of files you will end up with a lot tabs that you for sure is not going to use.
Closing/opening the right tabs is nothing more than you doing an analog version of Mylyn.
I cant live without Mylyn, at least not in large projects

Tom Dane

Nope. That’s the whole point – it closes the tabs for me. Either those that weren’t edited, or those that have been least frequently used. So I don’t explicitly open tabs – I only open what I need.
It is not as powerful as Mylyn of course – but I don’t need that many tabs to be opened.

arhan

No more plugin or upgrade war as it was in Eclipse (or MyEclipse or STS – used all of them before switching to IDEA). Never looked back also. You have to get used yourself to the specific build environments (e.g. IDEA plugin for Maven or Gradle) to setup migrated projects properly. This helps a lot.

Robert

“I do not need to learn a set of new shortcuts each time I switch away from Java.” – This is one BIG thing that drives me crazy everytime I try to convince myself that Eclipse is as good as intellij

Alex Wibowo

To me one killer feature after having switched is how smart it is in recognizing class-, function- and filenames by understanding CamelCasing. So just typing “lic” autocompletes to LoadImageCommand for example. But so does “loimco”, “lim”, “licommand”, “loadic” etc. Any combination works.

And function refactoring, which can add and shuffle parameters in all existing functions calls. Amazing.

(P.S: I’m doing JavaScript, CoffeeScript, SASS, ActionScript3. Not Java.)

micros

Eclipse supports it too (At last in case of Java).

tas

Exactly. Eclipse supports that for Java. IJ supports that for all languages that the majority of applications use today. Java, JS, HTML, CSS, SQL, HQL you name it

iNikem

Uses Intellij for 20 mins. Never looked back. Whole team now uses it.

Alex

Above points does not attract me to IntelliJ. Debugging and perspective (switching) is not an issue. You can customize your perspective as you want, and disable recommendations from eclipse perspective suggestion.

Mohammad Ilyas Soomro

I’ve tried many times to move to idea, never succeeded. Tried it again now, I’m struggling even with the most trivial things. Maybe you can help me? Or are there any materials that you’ve used during your migration process?

– What’s the replacement to eclipse quick access search (ctrl + 3)? I really would like to search all the possibilities instead of going through unknown menus one at a time.
– Does it have a plugin or some setting to ease migration pains? For example when I press ctrl+shift+T it kinda knows that I want to open type, can it suggest me a correct key binding?
– How do I configure it to put semicolons into correct places automatically? 🙂 WIthout it writing every line of code feels super unnatural.
– What’s the shortcut to select an expression (alt+shift+left_arrow)? This is essential to write code non-linearly, write something, select an expression, extract variable or method, or just cut/copy.

I know that it’s not the best place to ask, I’m just a bit jealous that everyone moves to intellij and are all happy and so productive and I struggle.

Oleg

– You can you Go to Action via Shift+Cmd+A, or Go to Class/File/Symbol via Cmd+N/Shift+Cmd+N/Shift+Alt+Cmd+N – whatever you wish. Go to Everything is coming in IJ 13.
– Two ways: 1. Use Eclipse keymap. 2, Get used to IJ keymap (recommended).
– Didn’t get what you mean. Please provide more details on the use-case.
– Use Cmd+W/Shift+Cmd+W. This works just perfectly.

Andrey Cheptsov

And in IJ keymap open class is Cmd-O (or Ctrl-O in non-Mac keymap IIRC).

iNikem

Ctrl+O shows me “select methods to override/implement”

Oleg

Look at shortcut in Navigate-Class menu

iNikem

I don’t do menus! I know about ctrl + shift + A! 🙂 Which is super awesome by the way.

But in fact it’s ctrl + n / ctrl + shift + n to navigate to class. This also usually does a different thing in programs, mainly creates or open something new.

But maybe it’s just me.

Oleg

We use different keymaps and that’s okay. I’m used to Mac OS X keymap (it’s similar to Windows’ one), but most people suggest to use Mac OS X 10.5+ (this is more Mac-friendly).

Andrey Cheptsov

Thanks for the reply! Shift+Cmd+A is awesome, I think it might help me learn idea way much easier.

Ctrl+W also works, but that is a peculiar combination to hit, usually it closes things 🙂

About semicolons, Eclipse has “automatically insert semicolons and braces” under typing settings, makes my life so much easier. Actually, it’s hard to explain what I mean, maybe I just type slowly and code in a strange way 🙂

About shortcuts, I don’t want to use Eclipse keymap in Idea, that kinda defeats the purpose. But I would accidentally hit keys that don’t make sense, can I have a plugin that would tell me: ok, you just used eclipse combination, here’s how you do that in idea.

Anyway, thanks again for your response, now it is much easier to navigate menus, I’ll give it another try 🙂

Oleg

As for the braces and semicolons, use Shift+Cmd+Enter it will complete any statement and add corresponding braces and semicolons. By default the IDE adds only paired braces.

Andrey Cheptsov

I was an eclipse user for nearly 8 years too. I switched to IntelliJ for android development (android studio) and now at the office for web development I’m starting to use NetBean. I could say that once that you break the barrier these two IDEs are better than eclipse.
Great comment, Regards

Alexandro Blanco

Save actions – I believe this is because IntelliJ automatically saves on a regular basis, e.g. when the window loses focus, or if the application is idle for a few seconds (I think 15 is the default).

If you didn’t already know the layout shortcut, it’s ctrl-alt-L – this will also optimise imports. ctrl-alt-O gives you direct access to import optimisation, with a bunch of options to fine-tune this.

Steve Chaloner

Yes, IntelliJ has autosave which is pretty quick. In a matter milliseconds actually. What I miss is a way to press one shortcut, which would format code, organize imports, add missing annotations etc…

iNikem

You can actually apply code styles and optimize imports by pressing Alt+Cmd+L. Or you can configure to do it automatically on commit.

Andrey Cheptsov

Adding missing annotations?

It seems that I have to update the post… 🙂 IntelliJ is even more awesome!

iNikem

As for the annotation, as far as I know, you can do it via inspections. By default they are enabled on commit. And you can apply a quick-fix for the whole project. But this to be checked.

Andrey Cheptsov

A! I have just remembered one thing that Eclipse does better 🙂 Gradle plugin for Eclipse, written by SpringSource team, is in fact better. IIRC, it supports gradle DSL with autocompletion et al…

iNikem

Never used it in Eclipse, is it really good?

Andrey Cheptsov

Just refreshed my memory and checked. No 🙁 Somewhat better than yours, but not really good 🙁

iNikem

I agree that’s what we are working on right now. Please feel free to suggest ideas for improvements.

Andrey Cheptsov

Just open any non-trivial Gradle build file and make at least autocompletion work. Gradle DSL autocompletion I mean. Just now it does not even recognise names of Gradle tasks

iNikem

I’m also used to ctrl-alt-L, but if you are using a version control system, there is an option(s) to ‘tell’ IDEA to optimize imports, reformat code and do code inspection on the fly, before submitting the code.

Duca

Yes, that is pretty handy 🙂

iNikem