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?
This post is older than 30 days and comments have been turned off.
