Last time I mentioned the Arduino and how popular it is, in part, because it has a Java-based IDE. Truthfully, to call it an IDE is almost overstating things. It has a very simple editor with some custom menus to do simple tasks including launching a build and downloading code to the hardware. It doesn't, however, support any on-target debugging that I am aware of.
If you want a more powerful IDE, though, there is an answer. It turns out the Arduino bootloader protocol is exactly the AVRISP protocol. So "full" Atmel IDEs like Atmel's own offering or the Eclipse plug-in (see Figure below) can program an Arduino just as they would any other Atmel chip. At that point, of course, it really isn't an Arduino anymore. You still don't get debugging unless you add some cheap hardware like a Dragon (I talked about that in March of last year).
On the other hand, for the Arduino's intended market, Eclipse is probably a bit much. Sure, it's powerful, but you have to admit there's a lot of nooks and crannies to learn. Microchip's MPLAB X is based on NetBeans, which is superficially similar to Eclipse.
I've mentioned before that I only participate in one ideology war and that is the vi versus emacs debate, which I consider to be roughly equivalent to New Yorkers' fanatical loyalty to either the Mets or the Yankees. I still do a lot of development in emacs. But I have to admit that a well-done IDE with nice trouble-free code completion and integrated debugging can win me over (although don't pass over http://is.gd/Ow4QJd and http://is.gd/ZG74sD).
The problem is — even with my beloved emacs — is that I often spend as much time fiddling with the IDE or emacs plug-ins as I do coding. Not a good thing. I recently noticed that Qt is available to target Android, and so I fired up Eclipse and updated all the Qt-related things.
The first problem was that autocomplete didn't show anything but class names. After jigging a few options, the autocomplete started working, although I'm not entirely sure which one did the trick. Then I tried to debug. The debugger hangs (I haven't even started targeting the Android yet, this is just a normal Qt program on desktop Linux). I finally gave up and downloaded Qtcreator. This is a very simple IDE (see Figure below), but it is surprisingly functional and worked with no fuss. Granted, I can't change perspectives and write COBOL in it (yes, I'm being sarcastic, but I'm also not kidding).
What really surprises me is that doing a Google search told me that I was not alone with my autocomplete and debugging problems (and I didn't find any answers to the debugging problem). While I get the value of having one tool to rule them all, I also get the value of having a preconfigured solution that lets me concentrate on the work instead of the tool. Sure, I want to be able to poke into it when I want, but I don't want to be forced to poke into it. MPLAB is based on Netbeans, but since it all works, I don't really care. Qtcreator is probably not based on anything, but it also just worked and so I didn't mind that either.
Then again, I always wind up going back to emacs anyway.