To blog Previous post | Next post

Why we dropped Eclipse in favour of IntelliJ

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.

. 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.

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.

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.

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.

. 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.

. 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.

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.