20 April 2013

Netbeans vs Eclipse vs IntelliJ IDEA 2013 Edition


Warnings:
  • This is extremely subjective review.
  • I am junior software developer (5 years experience), not a expert.
  • I am not professional blogger
  • I focus on usability and everyday experience rather than technical data
  • It contains sarcasm

Info:
  • This review based on  Netbeans 7.3, Eclipse 4.2.1, IntelliJ IDEA 12.1 
  • I suggest prepare strong coffee (double or quad expresso)
Suggestion:

  • Make a strong coffee as it is rather long article


Table of content:
  1. Introduction
  2. Installation
  3. Changes since last year
  4. GUI Usability
  5. Everyday usage
  6. Stability Plugins
  7. Others
  8. Android Development
  9. Conclusions
INTRODUCTION
 
I wrote an article 1 year ago about comparison between Netbeans vs. Eclipse. I updated few times since then (I added IntelliJ IDEA and I updated again, when I gain more experience with IntelliJ IDEA). It was a most popular post. Eclipse, IntelliJ IDEA and Netbeans got few updates over year. I decided to re-write last year post and update information about my experience with Netbeans, Eclipse and IntelliJ IDEA.



INSTALLATION PROCESS


  I installed all three new IDEs from beginning. Installation of Netbeans and IntelliJ was boring as everything went smoothly and program run without any complain. Eclipse's installer could not find JDK and did not want run. It does not matter it was 32bit/64bit. It did not run Eclipse is extremely fragile for path settings in Windows 7, which all other programs seems to have no problem with that.
If you want use Eclipse on Windows, 64bit but you need do stuff in 32bit world, then.... GOOD LUCK as it will be pain in the ass, specially, if you are beginner.
With Eclipse, I must mention another thing. Update. It can be nightmare as randomly, you cannot update something because problem occurred (usually, due null pointer exception reasons). Most funny part is that problems disappears usually after few attempts, project clean up, restart IDE, restart PC or next day. I still remember disaster with update STS from 2.7.2 to 2.8.0 that cause big problems (mess up Maven, project configuration files etc.). It was a nightmare for software developers who need reverse destructions caused by STS. (It took in my case half day, but I heard some people need 2 days!).
Another surprise is that Eclipse Juno examples  ... has not signed certificate for own sample project :).
I need to mention that. It seems recent  STS updates do not cause too many problems, but  I have heart attack every time I think about update Eclipse/STS.(Android IDE is a exception from this rule).
When I installed STS (one of the most popular Eclipse IDE mods (modification)) on my laptop with Windows 7, Windows Compatibility Assistant said, that settings are wrong and asked for ... reinstall. I did and then … STS runs.
This is a reason, why I have advice. Do NOT update, if you are in the middle of development or your deadline is soon. Eclipse/STS can doom you!


CHANGES SINCE LAST YEAR:


Netbeans did not change too much since last year. They improved  performance and improve  a lot stuff in Java ,html, CSS (I don't about stuff in PHP, Groovy and C/C++ ,so I can't write anything ). Biggest difference can be seen in HTML5/CSS. That is it.


Eclipse has major change from Eclipse 3.7 to 4.2 it looks a bit less horrible, but on my Windows 7 Eclipse’s GUI on like mix of... windows XP with Windows 95. GUI seems to be more flexible that before, but it cause weird problems as things like to disappear and few more problems. I still cannot find  many things in  this IDE. It is a total chaos. It looks like room after big student party  .mess and chaos that is impossible to describe as it beyond of scale. For whatever reason, everything is put in random places. For example. What you need to do in order to uninstall plug-in? Is it in plug-in options? No. You need go to about, etc. There a plenty examples of mistakes in GUI design, which confuses many users.
Eclipse remains as IDE with worst GUI, Usability (and many more, as you will discover later)

STS changes a lot since last year.I can see  major performance and stability improvements related to Spring projects. I am slowly start likes STS again after serious of crap releases that causes lots of trouble .It is better than Eclipse for Spring stuff.


IntelliJ IDEA. It changed quite a lot. They make lots of changes with frameworks support, but it requires an ultimate edition, but because I am using Community Edition, so I can’t test  too much.
Most important for me was feature Android UI Designer, which maybe it does not looks as nice as Eclipse ones but is very handy and do stuff ... well. (I think Eclipse implementation is  much better).
They change lots of stuff with code completion and with many developer tools and these changes make IntelliJ IDEA much better.


 GUI 

 Eclipse looks ascetic and primitive. It seems like Eclipse designers has allergy on colours and does not like using colours. Worst and ugliest GUI among IDEs.

Netbeans is opposite. It is most beautiful in my opinion. Simplicity and usability of GUI is one of the strongest points of this IDE.

IntelliJ IDEA 12 looks much better compare to previous versions. It looks much better than Eclipse and worse than Netbeans. The main problem with GUI is that it reminds me a mix of modern design with elements of Windows 3.11 theme in few places.  Code highlight is so-so. Otherwise, it is OK.


STABILITY


Netbeans simply works and almost everything seems to works. I have maybe few issues with this IDE but I am impressed with stability of this IDE.

With IntelliJ IDEA was bit worse and I had few minor problems during 11.x series, but since IntelliJ IDEA 12.x. I did not have any problems. Installation and updates works. All features do jobs. There is No reason to complain.

 Eclipse is like fanatically moody girl before period. When you update an Eclipse, You know , that often , magic various shit happens and you need restore your project from backup .Quite often is better to reinstall Eclipse rather than update. Various elements in eclipse love to crash for no reason. It happen often and you need spend half day to solve problem (with Eclipse plugins is even more funny).
If you see error and it is unexpected and looks weird, then press clean build and from time to time is good to restart Eclipse .It should helps with unexpected error messages that disappear after restart of IDE.I must admit that recent updates of Eclipse are better.





DEVELOPER TOOLS

Refactoring, build manager, vcs and etc.


Most features are built-in in IntelliJ IDEA and it works very well. Git, Maven and other tools works well and as expected. I think developer tools implementation in IntelliJ IDEA is the best among all IDE’s.

Eclipse supports almost everything. It is first IDE that got support for new 'technology' (language, framework, etc.). This is great. Problem is that these plugins are most buggy and has worst implementation .It takes ages before plug-in works, as it should.
Many people who has privilege to use Eclipse fit into this description.  "I  wanted to  Eclipse because it has support for all languages and their frameworks , version control systems , build managers and other system which I needed in my project .Unfortunately I gave up using plugins as used command line as plug-in they was too buggy , unreliable slow and too primitive to perform most tasks".
It applies to me as well. I still using command line for Maven, Git, and Groovy instead of plugins in Eclipse to achieve most task. I do not do that, when I use IntelliJ IDEA or Netbeans.

I did not use Netbeans for complicated project, but standard tools and features works smoothly. Netbeans is usually last to get support for framework and it is quite behind with support many features that plugins should offer.  It is only one thing, which I do not like  ... spellchecker, which is useless. I found Netbeans is very good for web based project and unit testing.

USABILITY  AND EVERYDAY USAGE


I really enjoy time with Netbeans. It looks nice, it is stable and it is very simple in use. It lacks of various plugins and support cause some problems with using for specific projects. Always, when I use Netbeans, I focus on produce code and I think this is best in Netbeans .Simplicity and nice GUI. It makes development... nicer, but lack of support can be a problem in complex project.

In other hand, Eclipse has support for almost all java (and non-java) technologies. It is unbeatable in amount of plugins and powerful IDE .However, using Eclipse is like swimming in septic tank. It is big, clumsy and stinky. Solving simply problem takes hundreds steps to do. I use Eclipse only I must as I am get annoy by amount of fake problems raised by Eclipse and time wasted on solve them. If weird error occurred, then follow this procedure. First what you need to learn is … that, if you see error, then try performing last task again. If not helps. Go to Project, choose “Clean project”, and if problem still exists. Try restarting IDE. It solve 99% unexpected and mysterious bugs (created by Eclipse and it exists in Eclipse only). I waste many hours to fix bugs that … exists only in Eclipse .It can be a nightmare using Eclipse from time to time.



Work on IntelliJ IDEA is great and my experience with this IDE is better and better. It does not look as good as Netbeans. Code highlight is uglier too, but when you start using auto-completion and other features and developer tools, then you quickly, notice that IntelliJ IDEA is unbeatable .I can say that IntelliJ IDEA is my favourite IDE right now for everyday usage. It is very helpful in development.


SEARCH:

Search is one of most confusing feature in Eclipse .First mission is to learn ctrl+f, because it will pop-up a normal search that doing search. Eclipse has search in top menu is powerful but it cause many troubles and many result end up with error pop-up message with "encored problem".
Netbeans and IntelliJ IDEA has good search feature that allow you to find all sorts of things in way that you understand and I never seen error message with nonsense.


AUTO-COMPLETION:

IntelliJ IDEA is very smart with auto-completion.it is a best implementation .Netbeans is OK, but is bit simpler.  Eclipse. ... well. Recently, I was surprised by Eclipse and way how it helps me solve problems .This is example of suggestion of ‘quick fix': 


I have a method

   public void testAEcwid(){
... I have 2 methods that throws a Exception
}
so I press quick fix. This is what happen in Eclipse:
public void testAEcwid() throws Exception, Exception{
  ...
}


 As result shocked me,so I tried the same stuff in  Netbeans and IntelliJ IDEA. Result was:
 
public void testAEcwid() throws Exception{
  ...
}
As expected. As wanted.

REFACTORING:


I must say that all IDE do their job well.
IntelliJ IDEA seems to be most advance and most smart. Eclipse is smart too, but for few cases, it has done terrible bad, which cannot be undone. Therefore, it was few cases, when I swear a lot to undo manually what Eclipse cannot do.
I did not do too much refactoring in Netbeans, so I cannot write too much. Basic features seems to works well.



OTHER:
Another annoying thing with Eclipse are tabs.It keeps deleted file with message (this file doesn't exist any more),so why bother? if you detect

ANDROID DEVELOPMENT

 
Last year Eclipse was one of two options for android development and Eclipse despite official support was piece of junk.
In old version things does not like to works.  I tried adding tabhost ...but eclipse occurred problem, so I restart Eclipse. Problem with tabhost disapear, but it has problem with something else. I press 'clean build'. Problem disappears but after 4 minutes, another problem appears and disappears randomly repeatedly. After 20 minutes of being pissing off for random reasons, I just gave up using Eclipse. You  needed to use 'clean build' constantly and deal with unexpected  mess up everything for no reason that prevent you to create new build.

However android support plug-in for Eclipse was updated few times since then, it changed a lot, and it is much better but be honest use ADT Bundle from Google instead of plain Eclipse ones. It is very good tool for Android development.

IntelliJ IDEA 12
supports Android development too. If you starts project from scratch, then it will be a nice and smooth starts. (It may require bit of fun with settings), but things get quite complicated. If you after install IntelliJ IDEA 12.You want to continue  project which you created before, then I get into few problems due problems with java jre, Android ski and libraries. Easiest solution was. Create a new project for Android. Setup everything .Run "hello world". In addition, import project, then things seems to work (except with add library projects into project).
So first impression varies depends on how you start. Devloping Android app with this IDE is amazing, because IntelliJ IDEA has much better tools that helps development. Making app for Android is quicker and painless.
Last year. Biggest problem with IntelliJ IDEA was a lack of proper GUI Builder .IntelliJ IDEA 12 solves this problem but it is not that great as Eclipse one. However is much more stable than Eclipse.
Netbeans. I know, that Android plug-in for Netbeans exists and it was bit problematic, but I never used, so I cannot make any opinion about it. Yet. I have plan to do quick project soon, so I will test Netbeans and android plug-in and update this section

  On Google IO 2013,they showed Andorid Studio IDE based on  IntelliJ IDEA !
I am very glad with that announcement. It means  IntelliJ IDEA  will have better quiality features for Android ! My first impression  with Android Studio was very good.It works,more-less and it works almost   the same as on  IntelliJ IDEA with Android plugin at the moment..




PLUGINS , EXTENSION , ADDONS AND ETC.


Eclipse has much more plug-ins than Netbeans and IntelliJ Idea, but install them can be quite difficult, because Automatic update quite often does not work due "No f... reason”. Manual updates in theory is easy but it sometimes works and sometimes not, because ... again. .. "No f... reason”. It works and does not work... randomly, but if Eclipse almost first that get plugin for new frameworks and technologies.
Netbeans has smallest number of extensions and there are behind in terms of available functionality, compare to plugins in other IDE. Good news is that they works very well (Automatic and manual installation did not cause any problems (apart some minor).Some third party plugins are easy to install as well.
IntelliJ IDEA has much built-in functionality so it does not require too many plugins (Problem is that many of these built-in features are available for ultimate (paid) version only.
.I installed few plugins and they works fine.


CONCLUSIONS. 


 IntelliJ IDEA .
 
It is a great IDE.  It has many useful tools and features that make developing a great experience. More experience I have with IntelliJ IDEA, then bigger fan of I am. It makes my Android development a pleasure experience. (Although, I still miss few android tools from Eclipse). I get use it that it looks bit ugly.


Best for: professional use.
I like MOST for:  developer tools (refactoring, auto-completion and etc. )

Summary bullet-points for  IntelliJ IDEA:
  • + Rich built-in functionality.
  • + Good Android support.
  • + Excellent built-in developers tools
  • + Great impleementation of basic features like auto-completion ,refactoring and search
  •  - You need paid version for many useful functionality
  • - Import Android project as first Android project started after install  IntelliJ IDEA can be a nightmare.(Workaround exists).


Netbeans ... I still like you! It is a best-looking GUI and best java highlight.  I using Netbeans for prototyping some of my project, update website and for write examples for this blog. This job is done very well. It is a bit problematic to develop very advance project with big complexity, but with some workaround. It is a very good IDE.


Best for:  beginners.  Java projects Website (html, css, javascript ,php ) projects
I like MOST for:  GUI, highlighting, simplicity.

 Summary bullet-points for Netbeans:
  • + GUI
  • + highlights
  • + Simplicity
  • + Great HTML , CSS ,PHP , JAVASCRIPT support
  • + Good basic features
  • + Stable
  • + 64bits works without problem.
  •  - plugins (low number,not up to date,functionality)
  •  - Stays very behind other IDEs in add new technologies 
  •  - Spell check

Eclipse


I use term 'Eclipsify' borrowed from play framework to describe: change simple/useful now is clumsy and complicated. If you hate your live as java developer, Eclipse is good to improve your hateness. If you like to see error message ,that appear from nowhere ,you couldn't solved and disappear magically after few clean project Eclipse are like my project that I didn't design them first. They are clumsy and overcomplicated. I hate you. For no reason you can waste 20% of your time, that you will spend on ... solving bizarre problem with Eclipse. It has biggest plug-in support, but they cause troubles that I end up with using command line instead (Git, Maven, etc.)
Why I hate Eclipse?
It fails and it disappoints me all the time. I import eclipse project from someone and for complex project that using  weird stuff it is 90% chance that will not work with my Eclipse and IDE doesn't give any sensible explanation ... why. Recently after  It was some technical issue with libraries I spent 1,5 day to solve problem and I give up So I import project into Netbeans I needed .... It takes 15 minutes to solve all dependencies and other issues and make ...Eclipse project works smoothly in Netbeans. It happens few times already, when I need to prove is imported Eclipse project works I use Netbeans to check out. Second thing. Eclipse is great because has plugins for newest hot stuff very quickly. Problem is that I end up with using command line (for git maven and other things), because plugins or does not works or cause problems. Third. When I update Eclipse (or specially STS), then I do backup, because it happens few times that my project was destroyed by mess made by Eclipse/STS
Best for:  It has largest amount of plug-in. It is almost first IDE that support new technologies .If you want improve patience .If you like waste lots of time on solve mystery problems.
I like MOST for: amount of plugins available and this is first platform, which usually get plug-in from new technology.

  • + Biggest number of plugins
  • + First IDE that get support from new language, framework and technologies
  • + Ability to create custom IDE based on Eclipse (like Android IDE,STS)
  •  + Great Android support. 
  • - Ugliest GUI
  • - Unreliable 
  • - Usability
  • - Stability
  • - Stability
  • - Stability
  • - Plugins quality
  • - Slowness
  • - buggy
  • - buggy
  • -  DEVELOPER TOOLS
  • - 1000's spontaneous fake error messages
  • - 100's problems caused by "encountered error" or  " null pointer exception"
  • - update system cause disasters
  • - time wasted on poor performance,solving un-existing problems created by Eclipse
  • - Installation can be tricky for 64bits
I think Eclipse is like Justin Bieder for music. Popular but ...

STS still so weird to use.
It has lots useful stuff,but amount of 'bizarre problems occur' is really annoying.
It is a incredible slow too.

Android IDE works quite well and Android Development is cool. It suffers from few usual Eclipse clumsiness but ..in general is good.


SUGGESTIONS ,which IDE is good for:

Remember! This is my suggest based on my experience and preferences.
Don't follow them blindly.


If you are beginner?

Netbeans.
If you learn Java.Netbeans is great.
Nicest GUI. Most readable highlights for Java.
It makes your learning programming experience most enjoyable.

I made massive improvements after switch from Eclipse.
BlueJ was a first tool to learn Java for me.

At work?

If is no any company's policy for that,then follow golden rule.
Use IDE that fit best for the job.
If your favourite IDE can do 95% of job, then try use your  favourite IDE first.

If you continue project started by somebody,then....

1. Use IDE that fit best for the job. (Convert, if necessary or make project IDE independent,if you can or you are allow to it!)
2. If your favourite IDE can do 95% of job, then try use your  favourite IDE first.
3. If program is completely depends on specific IDE.

If you temporary join to project , use this person's IDE (except if you have good reason to change , like u know that other IDE will works much better and much more efficient and you take over somebody else project ).

For your private project.
If you can,use your  favourite IDE, if not then  IDE that fit best for the job.
For example for quick Java project, php and etc. use  Netbeans.
If you using cutting edge stuff ,then Eclipse will have quickest support for that.
For Android IntelliJ IDEA  or Android IDE.


Update 1 22.7'2013
I added tiny paragraph to Android development

Any interesting feedback and comment  are warm welcomed.