First Guest Posting: Why I hate Eclipse by Jason L.
Published August 17th, 2005 in geek talk(It’s a long one and for geeks only…so skip if you’re not one or you’ll figure it out pretty quick.
)

First off, let’s say this: Eclipse was done by IBM cuz they wanted to ‘eclipse’ Sun. Get it? Eclipse? Sun? IBM vs. Sun? Yah, corporate humor and vengefulness, how nerdy and boring. Oh and first off sub one, I’m a command line Emacs/vi guy, so just giving you a heads up; I’m a little biased, but I try to be fair.
Ok, so why do I hate Eclipse? Little background first. I’m a consultant who (for now) makes a living coming into someone’s office, being nice and respectful and agreeing to be their rent-a-nerd for X number of months. With it, there’s a 50/50 shot you get to use your own tools (usually, frankly, if you’re ‘good enough’) or their tools. Eclipse seems to be the Java IDE du jour. Or better yet, IDE de l’annee (of the year). Hmph.
I try not to be biased. I’ve gone the IDE route before and only after I figured I rather spend my time typing in letters vs. driving the mouse and double-clicking did I swear off IDEs. Now I still have to use them cuz I’m not one to (most of the time) argue with the client.
I’m a firm believer in giving the client a good run for their money. And there’s nothing worse than some asshole who likes to argue about this and that vs. just getting their hands dirty and getting the job done. If the client says you’re using that crappy Pentium-60 in the the back with Windows ‘95, then, hey, it’s their money. My current client, however (and they’re a swell bunch of guys, really), has galvanized my dislike of Eclipse. It has eclipsed my view of Eclipse.
First, Eclipse is a do-everything-for-everyone in the most abstract way possible. Worse than Emacs, although, some would argue the opposite. I thought ‘buffers’ were abstracted or beyond 70’s coding terminology, but Eclipse has taken that in another direction: the future! Instead of ‘windows’ you have perspectives and views! I don’t
really know (still) what the difference is. And since there’s 5 billion menu items - only second to 10 billion Emacs Customization Groups options - it’s a real pain in the ass to figure out what does what. Sure, they’re labeled under the ‘Project’ or ‘Run’ menu items,
but it still just does not seem logical or very, dare I say, ‘intuitive’. Is anything really as intuitive as opening a door? Probably not. Needless to say, there are too many choices in Eclipse; too many icons, pictures and, er, words, sprawled all over!
Second, plugins. These are great in idea, but buggy in implementation. Whether it’s Tapestry, or Jetty, or Subversion (Subversion is a fun project in itself), there always seems to be some quirky thing going on. Like a zillion things to configure or some bizarro way to get a webapp to run (I have to double click on a ‘Run’ button in the menu bar or I can right click and selecting ‘Run’ from the project context menu). This isn’t necessarily the fault of the plugin architecture or premise, but it’s still goofy. Some people swear by it, but I think it’s like loading your Suburban (or Yukon, whatever) with as much shit as you can get and hope something,
somewhere doesn’t break.
Third, SWT. Ugh! In theory, again, maybe an ok idea. In practice, crap. First off, Java abstraction is there for a reason. Swing and AWT aren’t the easiest things to deal with. In fact, GUI programming is a pain in the ass all together. But the Java guys have done a lot of work on this and while Swing fonts *still* look like ass (yes, I know, wait for Mustang - finally 10+ years after Windows got AA fonts), they work. The slow stuff is old news as a lot of optimizations and bug fixing and tweaking, etc, have been done. I’m not saying Swing is the best, but it’s part of the CORE Java API, so Sun has a vested interest in making sure it works. And frankly, there are MANY more Swing apps than there are SWT apps. SWT however, it’s a bolt on library maintained by a third party with its biggest user being Eclipse. I’ve read all over the net problems GUI developers have had getting SWT updated or fixed and only being met with, of course, the dismissive nerd attitude - “I can’t duplicate that error, so I’m closing this bug”. Plus, SWT is a lowest common denominator widget kit. Even if your platform has cool widget X and Windows doesn’t, you won’t get it. SWT was built for Windows so Java people could develop on it and so IBM didn’t have to deal with Sun putting some kind of smack down or whatever on Eclipse. And SWT *IS* buggy! One day, while using my Powerbook, after having Eclipse open for about a week, I went to quit it and started getting these bizarro NullPointerException’s and the descriptive message was:
“Check the log.” The ‘human readable’ log said “Array index out of bounds in blah blah blah”. A quick googling yielded nothing. Yay. Now, whenever I quit or close a window, there’s always a nice little error box complaining about something. My Emacs or even vi would never do this.
Fourth, XML config files up the wazoo. Whose idea was this? Wait, lemmie rephrase that; XML is good, and can be good for configs, but if something bad happens (and what does Murphy’s law say?), then at least make some little tool, or better yet, some startup class that can fix or reset the config to a usable state. After the above NPE’s Eclipse just stopped even starting up and I would have to visit the un-friendly crash log, scratch head, and sigh. When my Emacs config breaks (and this is usually out of me f-ing w/it and not just outta the blue), it’s pretty good about telling me. I comment out the
offending line or replace the offending file, and I’m usually good to go. No such luck w/Eclipse. Believe it or not, after deleting the app and even trying a different version (in this case it was from 3.0 -> 3.1) there was still no joy. You would think the next point version would kinda tidy a few things up, but it didn’t.
Finally, I deleted the newer Eclipse, rebooted (this always works in Windows, right?) and re-installed the newest version. I even did a Spotlight search for ‘eclipse’ to make sure there wasn’t some stray text config laying around. The new version started, I re-checked out the code repo, then it crashed again after I closed some ‘perspective’. Then the same behavior came back. Might strange for a Java app that should be ‘abstracted’ from the OS level to still let you experience all the lovely ‘features’ of a full blown native app!
However, as much as I hate eclipse, I will admit the auto-build feature is nice. Now instead of a few seconds with Ant in my term window I get classes automagically compiled. However, sometimes, I’m never 100% sure if everything is up to date, so I still gotta tell it to do a clean, even if it says everything’s ok. But I suppose, this could happen with an Ant build file as well. Oh, and the Ant integration (yes, I’m back to complaining now) is a bitch to get working. I tried months before to ‘import’ my personal project via the Ant script and nothing would work right. I have to admit too that
NetBeans had similar issues, so it’s just some random Eclipse thing; it seems like a non-random IDE thing.
Some people love Eclipse. Some love little wizards that step them through things. Some love code completion (which I think makes you dumber really..). Some are afraid of the command line. Some just feel more at home in a GUI. Some like their tool to take up the whole screen and don’t mind driving the mouse any more than they drive the
car to go get Ben & Jerry’s a few blocks away. I’ll admit, I like a GUI OS for sure, and some apps, of course. I wouldn’t want a command line MP3 player. Yet some people love that stuff and would mock my iTunes, even if I told them I stripped out the DRM and had my own iTunes server their text client could listen to. In other words,
everyone’s different. But I have to say, I’ve had a tried and true .emacs file for about 8
years and it’s never failed me. From Linux to Win to OS X, it’s always worked. Maybe a little tweak here or there, but otherwise it’s been great. And whenever I go to work in the morning, Emacs just works. I have that editor open for months and it hums along, not degrading or acting weird. That’s one reason I like my Mac, it just works. Linux works, but it’s goofy and I only like it for server stuff. Windows is inefficient and a total security risk, so I avoid that like the [insert favorite plague here]. Plus, Windows is so
nerdy; it’s every feature you can think of in a sorta back-assward way and with no elegance. And that’s how I feel about Eclipse. Made for Windows people by Windows Java people. I know, maybe that’s not totally true, but that’s how I feel.
Emacs, while containing the kitchen sink as well, get’s the hell outta my way. It’s really good at editing text, colorizing words, saving ‘buffers’, indenting code properly, and just works. I feel like I can get in and get out if I have to with little trouble and good results. With Eclipse (and I feel it’s the case with most ‘modern’ IDEs), you always gotta do some goofy thing like create a project and then import your files or some shit like that. It’s like
you gotta do 50 steps in order to drive a car vs. open the door, put on seat belt, put key in ignition, turn, put in gear, step on gas, make oil execs smile, stop at red light every 25 feet. In my book, IDEs will never get it right. They just try to do too much. It’s the
classic Microsoft model. And as I get older, I feel like I need to simplify vs. complicate. I’m on a long journey to de-clutter my life. Emacs has been the little fat ferret that’s accompanied me along the way for almost a decade.
Some people love and swear by Eclipse and I’m not knocking them at all. They got their reasons and even tho I said code completion makes them dumber,
they’re still prob ok and even smart chaps. But for me, I hate Eclipse and if a client wants me to use it, fine, hand over the Benjamins. But I’d never recommend it for any programming team. I’d recommend less driving of the mouse, more tapping of the keys and to save the abstraction computation cells for the actual code, not the environment.