Creator of the Apache Tapestry web application framework and the Apache HiveMind dependency injection container. Howard has been an active member of the Java community since 1997. He specializes in all things Tapestry, including on-site Tapestry training and mentoring, but has lately been spreading out into fun new areas including functional programming (with Clojure), and NodeJS. Howard is a DZone MVB and is not an employee of DZone and has posted 80 posts at DZone. You can read more from them at their website. View Full User Profile

Why Eclipse Leaves Me Wanting

03.12.2010
| 8997 views |
  • submit to reddit

I think I've come to understand why Eclipse leaves me always feeling a bit frustrated. Yes, it is more stable than IDEA, uses less memory, has some documentation, and a lot of acceptance ... but even so, it just leaves me cold (and I was an early adopter, signed up for the beta way back in 2000!).

Keystrokes are not modal

The fact that I can type a common keystroke into an Eclipse window and not know what it will do is painful. How a keystroke is interpreted depends on what perspective is active, what view or editor has focus, and what kind of data is being edited in the editor. That's dead wrong; keystrokes are about muscle memory, and muscle memory remembers motion, not context. The end result is that I get frustrated hitting keystrokes and seeing nothing happening. It doesn't help that I cycle between Mac and a PC on most days.

You can't have it your way

A tool as powerful and extensible as Eclipse walks the tightrope of offering lots of features and customizations without overwhelming the user. Alas, Eclipse is lying in a broken heap fifty feet below that tightrope. Eclipse has an unending set of options and defaults for things I don't care about, but anything I do care about seems to never be presents. Here's a few ideas of the top of my head:

  • Stop running launches when I close the project (I often have to kill them from the command line)
  • Give me a quick way to stop all running launches
  • Why so many steps to implement an interface? It's the second most common thing I do!
  • How about a button to quickly relaunch the current running launch?
  • Why are the available refactorings so paltry and where are the 3rd party ones?

Who's eating their own dog food?

When I used IDEA, I was constantly struck by little details that showed that the IDE developers were also its prime users. For example, it has open-type and open-resource dialogs much like Eclipse ... but each recognizes the keystroke for the other, so that if you mistakenly activate the open-type dialog, you just hit the normal keystroke to switch over to open-resource. Eclipse makes you cancel the dialog first.

Another example: in IDEA if you rename a field, it notices the getter and setter and will offer to rename those as well.

IDEA also has lots of quick fixes everywhere, such as "implement this interface" and lots of other tiny, cool things I miss every single day I use Eclipse. It's been about a year since I gave up on IDEA and I still miss it.

Is it cultural or organizational? Eclipse gives me the impression that day-to-day developers either have no concept of how the IDE gets used (and what rough spots are causing some serious chafing) OR they are somehow prohibited from fixing things that are obviously wrong.

If you love IDEA so much why don't you marry it?

So why don't I use IDEA anymore? Two main reasons: first, it's become very bloated, to the point that unless you go in and shut off a ton of features, it's unusable on my hardware. Merlyn has the same problem doing GWT work on his MacBook Pro ... all the help it gives you comes at a cost in terms of CPU and memory utilization and some instability.

Secondly, I tried (even before IDEA went open source) to use IDEA in my training labs and I hit a stone wall of non-acceptance. Switching to Eclipse was a benefit to my students since, even running in Ubuntu instead of Windows, it was familiar and easy to navigate. It also out-performs IDEA inside my Ubuntu Virtual Machine. I simply lack the ability to switch between the two on a constant basis without getting completely confused and frustrated. I had to choose one, and I chose Eclipse: stable and accepted, even if it is brain dead.

Why call it Ugly?

One thing I don't get is how many people claim Eclipse is "ugly" and IDEA "beautiful". I found IDEA to be overly chock-full of modal dialogs and a number of improperly resized (or non-resizable) dialogs and windows. It's a real dog's breakfast in terms of UI, and has the classically ugly Swing look and feel.

I've always found Eclipse to look sharp and somewhat elegant. You can have a debate about the technical merits of SWT vs. AWT and Swing, or the ability to tune Swing to look like SWT ... but SWT out of the box is simply a better L&F visually.

On a Mac they both suck at keyboard navigation, though.

There, I've vented. See what going cold-turkey from Twitter can do?

From http://tapestryjava.blogspot.com/

Published at DZone with permission of Howard Lewis Ship, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Tags:

Comments

Colin Shine replied on Fri, 2010/03/12 - 3:58am

I am a Java developer who has recently switched to .NET/WPF development on Visual Studio. I would give my left arm to be able to use an IDE as powerful and easy to use as Eclipse. I never realised how spoiled we Java developers were until I was forced to use the Microsoft alternative!

Sreedhar Sudha replied on Fri, 2010/03/12 - 4:12am

I used eclipse for the first 3 years, then switched to Idea and started liking it after few days of using it, but now i am back to eclipse because of the memory issues with Idea. Its true that Idea has some cool features. I am bored with eclipse these days because of the same old look and feel and no themes to play around. At home, i played around with Netbeans and it seemed good initially but somehow i felt Eclipse was a bit easier to use interms of interface and usability. I guess i have to live with eclipse fore ever and with the same old look and feel.

Michal Huniewicz replied on Fri, 2010/03/12 - 4:31am

Call me evil, but I want to be able to kill every process running in background instead of having to click Cancel which causes it to hang for 15 minutes.

Ricky Clarkson replied on Fri, 2010/03/12 - 5:03am

Regarding IDEA's memory use, etc. It varies a lot, but I find it usable in a Windows VM with 1GB RAM on a MacBook Pro, directly in OS X and on a dual-core desktop machine with 1GB RAM. I tend to stick to the default settings, except that I turn off automatic synchronisation of files.

<p>

I experimented on a slower PC with running IDEA from a flash disk, as I read somewhere that the real issue is disk I/O, but I'm not certain that helped. Just after that I upgraded the machine to 3GB RAM, which certainly helped.

<p>

Not so much with the newest releases, but I found that IDEA's inspections take a disproportionately long time on long .java files, which slows me down a lot. But then I've halved or quartered the lengths of most of those files now, so the improvement might be because of my codebase rather than IDEA improvements.

<p>

My co-worker uses Eclipse, and he does all his SVN stuff outside it (TortoiseSVN), and generates his Eclipse projects via mvn eclipse:eclipse instead of using M2Eclipse. This seemed to me very inefficient so to attempt to speed him up I installed Eclipse and tried Subclipse, and just found that I could not even check out a project from SVN! When I clicked Finish, the New Project wizard just appeared again. I did it again and had three of the buggers.

<p>

IDEA has bugs, sure enough, but I don't find whole swathes of functionality that just don't work at all in it.

<p>

No, I haven't reported the Eclipse bug, because I was frankly disgusted. Feel free though, and if you need help reproducing it please email me.

<p>

If you didn't like seeing <p> in my post, perhaps having dzone interpret blank lines in the text field as blank lines in the resulting comment would be an improvement you might suggest!

Sancar G. replied on Fri, 2010/03/12 - 5:26am in response to: Ricky Clarkson

I use subclipse and m2eclipse to create, check in and out projects and never expirienced the bug you mentioned. Sorry but you must be doing something wrong.

Walter Laan replied on Fri, 2010/03/12 - 6:36am

Which version of Eclipse are you using? For me in Eclipse Galileo:

  • Give me a quick way to stop all running launches
  • How about a button to quickly relaunch the current running launch?
Available in the debug perspective.
  • Why so many steps to implement an interface? It's the second most common thing I do!

I don't know a wizard for it, but it typing the implements <interface name> and then quick fix 'Add unimplemented methods' is too much?

  • in IDEA if you rename a field, it notices the getter and setter and will offer to rename those as well.
Works in Eclipse as well.
  • IDEA also has lots of quick fixes everywhere, such as "implement this interface"
Available as quick fix when you pass a instance to a method that wants a specific interface.

Howard Lewis Ship replied on Fri, 2010/03/12 - 10:30am

I continue to be perplexed by which postings on my blog end up here at DZone.

Nicolas Bousquet replied on Fri, 2010/03/12 - 2:24pm

Implement interface :

Many way to do it, to name a few :

- Just add the interface declaration to your class then type CTRL-1. (class XXX imlements YYY)

- Make an new Instance of the interface, and type CTRL-1 (XX = new YYY)

- Your code don't compile because your missing some methods in your class implementation. CTRL-1.

CTRL-1 (Quick fixe) is a really good feature, allowing you to correct many errors, add casts, create local variables, add method to interface and all.

I think that your main problem with Eclipse are the keyboard shortcut. You don't like them. So you miss them most of the time. (Yes i have a mac too, and i really dislike my mac for keyboard shortcut).

I also suppose that other IDE have that, but personnaly love :

CTRL-click on a method of an interface to inspect directly the code to the implementation i want (invaluable for debuging)

CTRL-O ; Quick outline : non modal popup showing all fields, methods of the current class/interface with filtering. Type CTRL-O again and you can navigate to super type implementation.

CTRL-T : Find a Class/Interface by its name. Insanely fast and usefull when you have hundred of thousand of them. Of course you can do it even from JARs, JVM classes (better if you have imported source or have a decompiler plugin. And you can regular expression or camel case. I

For exemple your class is named : MyWonderfulClasse. but another one is named MyWonderfulList. Why type MyWonderfulC to find and open MyWonderfulClasse ? Just type the UpperCase letter : MWC and type enter. Of course it's also work when your are typing code (XXX =  new MWC and then CTRL SPACE).

You can navigate also within packages.

CTRL-R : Same as CTRL-T but for resources (xml file for exemple).

F4 : show the hierachy of a class/interface.

CTRL-SHIFT-G : Find all occurence where the specific piece of code (method, field, class, interface) is used in your workspace.

ALT-SHIFT-R : rename field, class, interface, method and update reference in all you classes.

 

I know IDEA is a good IDE, but never tryed it because the full version has to be paid. And the free version is laking many things Eclipse support. I feel good with eclipse even sometime you can be in some troubles, but as you say here, IDEA seem worse... So why i would pay for something i not even sure will be really better ?

 

@Ricky Clarkson :

When you create a new project with SVN, you have the option to directly finish the creation of the project, or use again the new project wizard so you can choose what type of project it is : like a web project and so on. 

 

 

 

Gautam Dev replied on Fri, 2010/03/12 - 9:26pm

Eclipse should really put the feature of "auto complete a statement".
If you write :
if (condition) // press some key here
It becomes in intelliJ :
if (condition) {
// cursor here
}

I agree on the getter/setters. It should be fairly trivial.

Jocelyn LECOMTE replied on Sat, 2010/03/13 - 2:08am in response to: Howard Lewis Ship

Are you telling that this post was never intended to appear on DZone ? If this is the case, I think that that Dzone should:

  • delete it
  • make excuses about what happened
  • explain how it could happen

Nicolas Bousquet replied on Sat, 2010/03/13 - 7:39am in response to: Gautam Dev

@Gautam

 This one do not work, but you can try :

 

Type "if" then CTRL-SPACE then ENTER. you hand up with :

if (condition) {

}

 

Cursor in on condition. Type it. Confirm, curso go inside brackets.

 

 

Nicolas Bousquet replied on Sat, 2010/03/13 - 7:46am

I am not here to say eclipse is better.

 I guess that if i have to try IDEA, i will need month to appreciate it, find equivalent to my eclipse habits and to really use IDEA unique features.

But if I had a reason to do this, i would search the IDEA web site,  forum, post and all to find "Tips", good shortcut and all.

Here for the shortcut part (not counting the Mac problem, i have the same, but i'am nearly sure IDEA do not help much here...), or many usefull assist features, you GUY needs to search for them, trying to improve and all.

Just take time to master and understand your IDE whatever it is ! And i'am agree with the first poster, no IDE is perfect.

James Selvakumar replied on Sun, 2010/03/14 - 1:16am

The solution is simple, "Use NetBeans" ;-)

Martin Wildam replied on Mon, 2010/03/15 - 5:27pm

@Colin: I was a Windows Developer until about a year ago. When I switched over to Java I experienced both IDEs - Eclipse and NetBeans better than the Microsoft IDE for .NET. I was used to the prior .NET times when the IDE was sufficient for me. The .NET I found only awful - the IDE was one of the contributions that I have chosen to go to Java instead of .NET.

It was two attempts I made trying Eclipse and NetBeans and compare the IDEs. Finally I have chosen NetBeans and since then not a single day I regret it. I did not try IDEA.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.