October 2010 Archives

Why Does Eclipse WTP Still Suck So Much?

Much as I hate it as a language for its performance and its tendency of its code to rapidly degrade into a haystack of unreadable crap, PHP has one tremendous development advantage over Java, still: you can change a line of code, ALT-TAB to your browser, hit Reload, and see the effect, instantaneously.  This does wonders for the development cycle.  Of course eventually it bites you in the ass, because PHP is so unmaintainable and hideous.  But the quick cycle is fantastic.

Eclipse began a sort-of half-assed attempt at integrating development with deployment half a dozen years ago, with the first release of WTP back in 2005.  And since then, it hasn't gotten any better.  It may have even gotten worse.

In a perfect world, when I change a line of code in Eclipse and save the file, the class would be recompiled, hot-swapped into the running server, and I could go see the effect of my change in my browser.  This does not happen.  Or rather, sometimes it can happen, maybe.  Maybe if you install JavaRebel, it will work.  Maybe it won't.  Who knows?

What really happens, most of the time, is that Eclipse will compile the class, then, for reasons I can't imagine anyone understands, it rebuilds the entire .war file for your whole project, then copies the war to the deployment directory of the server.  Then the server reloads completely, exploding the war, and restarting everything.  The entire process is maddening and can take several minutes, for every change, no matter how insignificant.

I say "most of the time" because a lot of the time, for no apparent reason, things just don't work.  Something won't get included in the war file, despite no changes to the configuration for your project.  Some dependency gets left out.  Some resource file doesn't get copied.  Sometimes the war file gets rebuilt, but not redeployed, or not reloaded.

When any of these things happen, you find yourself going through this stupid litany of things to try to get the damn tool to do its job.  Clean the server.  Clean all projects.  Restart the server.  Update Maven dependencies.  Restart Eclipse.   A single-line code change can turn into a 20-minute ordeal trying to get the damn server to reflect your change so you can see its results in a browser.

Most infuriating about having to go through all these insane steps is that there's no definite action that causes WTP to fail; there's nothing one can avoid doing to avoid going through all of these things.  As far as I can tell, the bed-shitting is completely random and utterly nondeterministic.

No doubt some of the trouble comes from the m2eclipse plug-in.  In fact, I suspect that a good 60% of the problems I experience overall in Eclipse are a direct consequence of something stupid in m2eclipse.  Of course we wouldn't need m2eclipse if Eclipse had acceptable Maven support built-in.  But it doesn't.

What's so baffling about this whole situation is that it hasn't improved!  In the 5 years since WTP was initially released, the user experience has not improved one iota.  The cycle time with JBoss can still easily be several minutes per change (when WTP isn't completely going batshit as outlined above).

Surely in 5 years' time, this piece of braised crap could have been made some small degree more stable so as to be actually useful, and a time-saver rather than a time-suck.

I can't believe we're still writing web applications like this and it's almost 2011.
Many of us learned many important life lessons in Kindergarten: don't fight, take your turn, share, be polite, etc.  Some kids inadvertently learned the wrong lessons, however, and grew up to become right-wing conservatives.  Here are some of the lessons they learned:

  • If someone looks or sounds different from you, pick on them.  Get your friends to pick on them too.
  • In a disagreement, whoever shouts the loudest wins.
  • Often times, you can break the rules and not get caught.
  • If you do get caught, you can always blame someone else.
  • Name-calling is funny, and your friends will laugh with you.
  • If name-calling and shouting don't get you what you want, try pushing, shoving, or hitting.
  • It's better for people to give you what you want because they're afraid of you than because they're your friends.
  • Hoard all the best toys for yourself.
  • Cut in line.  You need to get there before anyone else.  Make alliances with people who will let you cut.
  • If the teacher catches you doing something wrong and you're punished, blame the teacher and say bad things about her.
  • Prove it?  You don't have to!
  • Milk, cookies, and naps are the best things in the world.
  • If at first you don't succeed, keep doing the same thing over and over again, and scream until it works.
  • Speaking of which, you can take an extra cookie; why should you care if that means someone else can't have one?
  • If you pee on the floor, someone else will clean it up.
  • Girls are yucky!  They're not as good as boys.  Boys are better.
  • If a classmate has something you like, wait til he's not looking, and then steal it.
  • When you lie convincingly, it's your word against someone else's, and you can get away with it.
  • You can show other boys your wee-wee in the restroom.
  • When all else fails: temper tantrum!

About this Archive

This page is an archive of entries from October 2010 listed from newest to oldest.

September 2010 is the previous archive.

November 2010 is the next archive.

Find recent content on the main index or look in the archives to find all content.

Categories

Pages

Powered by Movable Type 5.02