I've decided to run again an RCP project I've created one year ago. So, I've downloaded the new Eclipse 3.3 with the RCP/PDE bundles, point it to my old workspace and... tore my hair out in frustration.

Word to the wise

I've forgotten, but now I remember again: Don't try to develop on Eclipse RCP. I like the IDE, it's very powerful, but the RCP platform is so much over-engineered that it's not funny anymore.

I don't object to over-engineered and complication frameworks, but this has to stop. When you cannot understand why your project (that ran under 3.2) refuses to start, and there are 5 or 6 places you have to check (only to find nothing, mind you), there are problems. Can they be overcome? I don't know.

Java is not dynamic enough, XML is not strong typed.

The main issue, as I see it, is that Java is static typed. So, a lot of fancy runtime configuration had to be bolted on using huge XML files and special code that parsed them. This is, in a sense, what the Eclipse platform is all about. You can activate and deactivate plug-ins at will, you can plug-in into pretty much everywhere and provide custom behavior and whatnot.

The catch is that this tends to be very complicated, very fast. They've taken the age old mantra of frameworks:

Simple things should be easy, complicated things should be possible.

And they've turned it on its head:

Simple things are complicated, complicated things are easy.

Why? Well, because getting tangled into a myriad of configuration files and special secret extension points is surely a thing you'd have to bear with in order to get advanced functionality, but you have to do it even for the simplest case.

What to do?

I understand that the Eclipse Foundation is now a big organization with a lot of stuff under its belt, and it has to follow through. But I think they must take a step back, and really simplify the Rich Client Platform. If only it was:

  • Simpler to grasp
  • More documented
  • Refactored for the common case

I think that most of the issues I'm facing would be resolved.

Nomenclature

Just for fun, here is a list of jargon I had to remember, just to try to run my misbhaving application:

product, bundle, application, plugin, osgi, realm, registry, extensions, extension points, dependencies, runtime packages, MANIFEST.MF, plugin.xml, build.properties, plugin_customization.ini, config.ini, my.product, features, fragments, Activator, Buddy, Buddy-Policy

Nice huh?

August 17, 2007, 11:53 a.m. More (422 words) 0 comments Feed
Previous entry: Using NSImageView with Core Data and Cocoa Bindings
Next entry: Cocoa tutorials list

This post is older than 30 days and comments have been turned off.