Sometime ago I’ve written a post on Netbeans vs Eclipse and tried to keep it up to date. After I’ve written that post, work got really busy leaving a very small time to be able to compare IDEs. I had two code base on both IDEs. I had very little time to move from one to another and I had to maintain both at a very fast pace. That gave me perspective and I was able to test both IDEs under stress.
Netbeans: Myway or Highway
Netbeans is very slow cumbersome and rigid under stress. The changing requirements force you to do custom maven configurations and Netbeans is very skeptical about it. Esspecially when it comes to deploying to a custom container. Just forget about it. Simply put, if you’re not going to use Netbeans supplied JavaEE 6 maven pom, don’t bother with Netbeans. The most serious flaw of Netbeans is to rely on maven for building maven projects. Sounds weird right? Actually not at all. For large project with many nested maven sub projects, you always at some point need to run a test case in isolation. Since you’re touching code here and there, your maven build gets old pretty easily and when you try to run a single test you end up waiting for all maven build to complete. The seconds become even more unbearable with your co-workers looking directly into your eyes waiting irrelevant maven tests to finish while running a single test case to locate a potential bug.
Eclipse: Everyway, but it depends
I’m not a fan of Eclipse’s native GUI bindings but after using it under stress, I have to admit that it’s robust, responsive and sharp than Netbeans’ swing. When developing on a notebook, screen estate is important. Every pixel counts. I’ve gotta give credit to Eclipse for that. With Eclipse, you see more of your code and project on the same screen. On the other hand maven support is OK. If you get the maven plugin right, dependency management becomes quite automatic. Deployment and redeployment is much faster in Eclipse. Forget what Oracle funded evangelists are telling you about Netbeans and Glassfish combo. In real life you’ve got to deploy on several different containers under several different conditions. Eclipse at least helped me survive the day. Edit a class and hit save, after a couple of seconds, your Tomcat gets reloaded with new code and you can switch to your browser to see the effect.
IntelliJ: You need to pay to get all the goodies
During tiresome code sprints, I had the chance to try IntelliJ on a seriously large piece of codebase. It was version 10.X not the 11 which incorporates native GUI widgets. Here are some of the highlights that I likes about IntelliJ.
- No saving files: Seriously. You don’t save files. They are autosaved.
- Consistent shortcuts: Shortcuts in IntelliJ is awesome. You don’t get crippled like in Eclipse. Almost everything is accessible via a couple continuous simple key strokes. Shortcuts prompt a context menu where you can filter them with keyboard. You’ll have to try to understand that for yourself.
- What was that again?: Forgot the shortcut of an action? Hit Command-Shift-A (in mac) and you’ll be prompted with an auto-complete like menu where you can easily search for actions and their shortcuts.
- Overall navigation and coding performance: Once again the organization of shortcuts enable you to code much faster and navigate more efficiently. Autocomplete is notoriously intelligent. Even in suggesting variable names.
- Control over Deployment: Like in Eclipse you are in charge for deployment. I found configuration to be more intuitive.
- Easier Import: Somehow I found easier to import third party code to IntelliJ than in Eclipse. IntelliJ seems to guess better where the sources, libraries and dependencies are.
- Unit Tests: IntelliJ has the best unit testing support I’ve seen. I could easily visually diff expected vs actual in unit tests which is not very ergonomic at all in Eclipse.
- Several other good stuff: IntelliJ is very good at locating Spring and CDI beans navigating between code and configuration. Unbelievably good code completion in EL, SQL, JPA etc. Things that you cannot find in Eclipse or Netbeans.
- Debugging: I hate Eclipse’s lack of proper evaluation during debugging. IntelliJ is great at that. You get code completion everywhere.
So far here are what I didn’t like about IntelliJ.
- In Eclipse, when you hit save, you get red underlines in files where there’s a problem. In IntelliJ you don’t get that. you don’t see the problem until you open that file, make a build or run.
- What I write code I start with the name of the variable. Like “x=new Pojo…”. IntelliJ seems to hate that. It always tries to rename x to Pojo. I don’t know how I can change that.
- Bad scala support. If you’re using scala libraries in Java, IntelliJ complains about many things and underlines everywhere with red. Eclipse does this correctly but code completion becomes a pain. Again I’m not sure if this is the case in 11. I’ll need to check that out.
- I wish IntelliJ had easier inspect in debugging. In eclipse you highlight and hit Command-Alt-I to see the highlighted part’s value. In IntelliJ you have to click with the mouse while holding Alt key. I wish there was a shortcut for that. (Maybe there is, so please tell me.)
In the end I’ll try to get rid of Netbeans as quick as possible and see how Spring Tool Suite (STS) and Juno will be like before moving completely to IntelliJ. I’ve just downloaded Eclipse Juno and IntelliJ 11