The IDE jungle
It is always up to discussion what IDE (Integrated development environment) is the JAVA developers best friend. Some will already here shout ”what’s wrong with Emacs”. In my opinion there is nothing wrong with Emacs, the world has just evolved and new tools with different approaches have seen the light of day.
There are a lot of tools out there that call themselves JAVA IDE. I have worked with JAVA the last 15 years and have used a lot of tools over the years. Some of the tools have kept appearing. Basically the tools can be divided into two types: vendor specific tools and general-purpose tools.
The vendor specific tools that favorites an application server, a GUI framework, a tool suite, etc. These tools are god for a specific task / application and the development can be helped and eased by using the build in support. But… trying to do other kind of development that the tool is not meant for will be painful and instead of working on the business logic the developers time will be used on hacking the tool to do the expected job… or almost doing the expected job for the most.
General-purpose tools are as they are named – jack of all / master of none. It is up to the developer to provide most of the plumbing for specific frameworks. The big general-purpose tools have a plugin structure that can help the developer a bit. It is a bit hard to use the phrase “master of none” about these tools because they can help a lot with the general plumbing. The general plumbing is in this context access to source control, access to build tools, access to refactoring, code styling and formatting, debugging, etc. These things are in the top tools very advanced and on all accounts make it up for the lack of support for specific frameworks.
The IDEs I have seen more that once over the last 15 years are JDeveloper, IntelliJ, NetBeans and Eclipse. I have seen a lot of other tools but they haven’t been the companys choice and only been used by single developers.
The times I have been working with JDeveloper is because of the integration with the Oracle application server (OC4J) and the enterprise Oracle frameworks. JDeveloper is between a vendor specific tool and a general-purpose tool. In my opinion it is more a vendor specific tool and it’s strength is on Oracle frameworks.
NetBeans, IntelliJ and Eclipse are general-purpose tools and NetBeans is in my opinion not yet in the same league as IntelliJ and Eclipse. At two companies that I worked I used NetBreans, both companies changed to another IDE – the first time to IntelliJ and the second time to Eclipse. I don’t see the big difference between IntelliJ and Eclipse. One of the big differences is of cause that Eclipse is free and IntelliJ is quite costly. If money not is a problem it is a religious choice between IntelliJ and Eclipse – they are both super professional tools.
My favorite tool has changed over time and for the last 5 years I have used Eclipse. Mostly I use Spring Tool Suite that’s Springs edition of Eclipse. The reason for this is that Spring has added some standard plugins that I use. My main development platform is Mac OS X but most of the customers demands I also use the Windows platform as well.
In my opinion is it brave to select vendor specific tool instead of a general-purpose tool. It freezes the company at a specific platform that not necessary is the right solution over time. It limits the adaptions of other vendor’s bright ideas. This leaves the general-purpose tools as the best IDEs where it is possible adapt new technologies more easily. The main task of writing POJOs, accessing source control and support for build tools are nicely done in the two top candidates – IntelliJ and Eclipse. The main reason that Eclipse is a pinch better is that it is free and that the user group is quite big. If you run into problems you are definitely not alone and there are a lot of bright people out there.