Most professional Java developers swear by IntelliJ IDEA. In my new job I use it on a daily basis. I have to agree – it rocks. At $499 it is not terribly expensive compared to other commercial licenses. The free version has restrictions and I cannot speak to what those are since I have not tried it.
Coming from an Eclipse background I wanted to share my take on the differences between the two. Debating the merits of an IDE can incite a holy war. Everybody is different, everybody wants it their way, and what is familiar often takes precedent over what is foreign. However, when I get too comfortable with a tool it probably means I am not keeping up. Embracing change is an important part of being a software professional.
Both Tools are Really Good:
Both tools get the job done and don’t get in my way too much. I am happy using either. IntelliJ is smoother in several areas, especially navigation and integration with SVN. However, IntelliJ is focused on the Java ecosystem, which can be a limitation. They both take 30+ seconds to start and sometimes freeze up during complex operations.
Eclipse’s Broad Language Support and Plug-ins:
Eclipse has a huge plug-in eco system. Some of the plug-ins are gold. Some are downright garbage and don’t work. Some plug-ins only work in a certain version of Eclipse. It can be frustrating to get everything working just right. Such is the nature of open source.
One thing IntelliJ users often over look is the fact that Eclipse does much more Java. I have used Eclipse for Python (pydev), PHP, Ruby, CSS/HTML, Perl, Database Modeling, SQL, UML… the list goes on. According to the wiki, Eclipse even does COBOL, Ada, and C++! In a past job, I was having to switch between languages on a daily basis. Not having to switch IDEs was nice. Eclipse destroys IntelliJ when it comes to a work environment where both java and non-java technologies are called for.
IntelliJ – Overall Impression:
IntelliJ seems to anticipate what I am doing and makes navigating a complex object model fairly straight forward. Integration with app servers, such as WebLogic, is seamless. The debugger works really well. The search feature is fast. One thing I really, really love is how responsive the auto-complete is. I can’t count how many times Eclipse would grind for 15-20 seconds when I would type a ‘.’ after an object. The pause would break my chain of thought.
SubVersion Integration – IntelliJ Wins!
I think my favorite thing about IntelliJ is the integration with SVN and the ability to shelve changes. I had used Subclipse in the past for Eclipse. With Eclipse, each changed folder/file gets a tiny little star next to it. This makes it difficult to see what has changed locally. IntelliJ has a tab dedicated to changes that stays at the bottom of the window. No need to switch perspectives. The built in diff tool, (Ctl +D) is really handy.
IntelliJ IDEA Keyboard Short Cuts:
For developers switching from Eclipse to IntelliJ, I have made the following list of hot keys in IntelliJ:
|Alt + Insert||Generates code (getters, setters, etc.)|
|Alt + F7||Find uses (highlight a method or variable)|
|Ctl + N||Lookup Java class by name|
|Ctl + Shift + N||Lookup files in project by name|
|Ctl + F12||Inspect all class methods|
|Ctl + Mouse Hover||Shows class name|
|Ctl + Click||Navigate into a method|
|Ctl + Alt + Left||Go back to last tab|
|Ctl + Shift + Backspace||Back to last place where changes were made|
|Ctl + F10||Redeploy and update degugged instance|
|Shift + F10||Run|
|Ctl + /||Comment / uncomment code by line (adds //)|
|Ctl+ / + Shift||Comment / uncomment code with block comment|
|Ctl + Alt + F||Format code|
|Ctl + Alt + O||Organize imports|
|Alt + Enter||Fixes and contextual actions|