When it comes to Developing code, every developer has his/her own preferences. Some use Text editors and some use IDEs (Integrated Development Environments). An IDE combines several tools into one suite that allows more coding functionality than a single small text editor.
Most Java Developers are using Eclipse, a free open source environment. This is basically because of the exposure effect during their time at the university. At the university, you get introduced to Eclipse, because it’s “free” and can support a lot of languages and can easily be extended with plugins. The same argument can be made for companies, the developers are already trained using the IDE and its “free”.
IntelliJ Idea comes in two flavors, a community edition (free) and the ultimate edition (200$ – June 2014). When comparing these two IDEs at first glance it looks like both editors have almost identical features, however it is harder to extend IntelliJ with Plugins, fewer developers are using it, the community edition has core Java Development features, but most of the Enterprise features and languages are only supported in the ultimate edition which costs money.
So yeah what’s the point of this article, the winner is Eclipse, a free open source software trumps evil company trying to make money. But wait, “almost identical” is not the same as “identical” features. Let’s take a closer look:
The feature Showdown
Yeah, well both Eclipse and IntelliJ can save files – what a surprise.
Eclipse: Each tab signalizes with a “*” that you modified the file. Press Ctrl-S and your file is saved. If Eclipse crashes you lose all your changes.
IntelliJ: Do nothing. IntelliJ automatically saves every change you do not lose any of your work. On top of that, it stores a local history allowing you to undo changes even if you are not using a Version Control System.
Another benefit of autosave is when working with HTML/CSS you do not have to double-check if you correctly saved all files before viewing them in a browser.
Let’s say a new developer joins your team and he needs to get started. Now the environment must be set up for the new developer.
Eclipse: Does not have this feature for each developer you must repeat the same initial steps to get the framework running. Download the framework, place them in the project, and modify the project settings to include them as external libraries. Then double-check that everything is working correctly (due to human error you probably forgot something)
IntelliJ: “It looks like you are using the spring framework, should I set it up for you?” Automatically identifies and resolves dependencies. Then double-check if everything is working correctly.
You open a file in a project that uses the .py ending.
Eclipse: Opens the text editor.
IntelliJ: (Ultimate Edition) opens the text editor + “It looks like a python file, we got a plugin for that, should I install it and restart to correctly display the file?”
Version Control Systems
Every project should use some sort of VCS system.
Eclipse: Well we got plugins go find the right one. Update: Eclipse 3.4 now has Egit a Java open source programmed git client integrated.
IntelliJ: The 5 most common VCS systems are seamlessly integrated into our system. In addition, the user interface is designed to have easy access to the most common VCS controls.
Copy and Paste Code-Blocks
A good practice is to rearrange your code in a standardized fashion. Could you collapse a code block and move that around?
Eclipse: when attempting to copy a collapsed code block it uncollapses it and you must redo the selection.
IntelliJ: copies the entire code in the code block. Note: This feature should be used for HTML stuff, copy and paste coding is a very bad practice.
Eclipse: you must press Ctrl-Space to see suggestions that start with the letters you previously have entered.
IntelliJ: Uses context-aware auto-completion = it’s smart and at the same time no more pressing Ctrl-Space. If you want to set a String variable to the output of a function, it will suggest functions that return strings. It doesn’t matter if the function starts with the keystrokes you have entered it checks if the function contains your keystrokes.
Style guides are used to coordinate, standardize and promote good coding practices. https://code.google.com/p/google-styleguide/
Eclipse: Syntactically correct Java is good enough.
IntelliJ: Underlines code that is not following the guidelines. With pressing Alt-Enter IntelliJ automatically corrects the code to follow the guidelines.
Java is constantly evolving and improving. Take for example the shorter for each loop syntax.
Eclipse: Java is syntactically correct. No indication that the loop may result in an “array out of bounds exception”.
IntelliJ: You could rewrite the code with the shorter for each syntax and avoid the array out of bounds exception. Press Alt-Enter and the code gets rewritten with the new syntax. This does not only apply to Java but to practically every language IntelliJ supports, like CSS shorthand syntax, alt-enter and the code are shorter etc.
IntelliJ also has a “rearrange code” functionality, which automatically rearranges variables and functions based on the coding guidelines.
Nobody likes to write documentation, even less double-checks when changing the function if the documentation is still correct.
Eclipse: missing feature
IntelliJ: With just typing /* before the function it automatically creates a Javadoc comment string with all parameters in the correct format. The code validator checks if all doc strings are completed, fixes spelling mistakes and notifies you when modifying the function that the doc-string has errors.
IntelliJ indexes everything and is really fast while searching for text compared to Eclipse
The Company behind IntelliJ wants to sell a product, thus they have the interest to keep their customers happy and fix bugs and provide new features that the community requests. While Eclipse is open source and says: you want a feature, well then build it its open source dude.
Now you may say well those are nice features, but altogether it is not worth it. There is no benefit besides minor usability tweaks. You may save a couple of seconds here and there but overall – meh.
Initially, it may seem that way, however, If you are working with a team, not all team members have learned to code following the same standards you are following and practically never follow coding guidelines. By having the program subtly reminding team members to improve their code quality – in the long run, the code will become more easy to read and more easy to maintain. That is a huge benefit for any software development project.
But you are not working with a team, even then you can befit of clearer code, thus fewer bugs, thus more time for other stuff. Overall you will be quicker more focused on your work, have less jumping around in your code, it’s easier to get a new developer up to speed, and for me, that’s a clear efficiency and quality win.
Cost of switching from Eclipse
For the transition phase, you still can use both editors, IntelliJ can import and export Eclipse projects without any major conflicts.
The colors can be customized to be the same color scheme as Eclipse (http://www.ideacolorthemes.org/home/)
But you really don’t want to switch because you memorized all your keyboard shortcuts. Well, IDEA has got you covered there as well IntelliJ has a preset to use map the IntelliJ functions to the eclipse keyboard mapping.
But it costs Money
Well can I ask you a question, are you a professional developer? If you are by definition you are getting paid for your work. So some customer values your programming skills, it’s the same thing when you buy software from somebody else and I bet you have bought some computer games.
It costs you initially 200usd = 1usd/day, then 100usd/year= 0.5usd/day. In addition, the costs are tax deductible (depending on your country, I am no tax expert).
Look at it as a tool that will make your life easier and more relaxed. A professional tool for a professional developer.
The program has many more features and I am still discovering new features every day. While Eclipse is designed to be a platform for plugins, IntelliJ is designed as a professional development tool.
Eclipse is initially free, however, the 200usd price tag negligible compared to the weeks of work that can be avoided by having better code standards and higher code quality and documentation. IntelliJ proactively supports and encourages developers to write more stable robust and maintainable code while at the same time increasing development speed.
I only can recommend that you try out IntelliJ and decide for yourself which environment better suits your need. If you are a student or just have started learning Programming check out the community edition. If you are working in an enterprise environment try the ultimate edition.
Some more Resources: