I have been playing around with e4 (M3+Integration) today and so far I’m not impressed. I’m keeping an open mind, and may change my opinion at a later time.
At the moment however, I would dare to say that e4 might be the “Windows Vista” moment for Eclipse. High hopes, but at the end of the day not groundbreaking enough to be interesting for a wide audience of developers (=regular java devs, web devs)
There are some things I like a lot and would like to see in 3.x, such as:
- CSS theming
- trident animations
- getting rid of the *Advisors
The biggest drawbacks in my opinion:
#1 NOT simpler, just different
From my POV app development is still too complex for the avarage developer. Here is why:
- Using dependency injection via annotations instead of having interfaces / abstract classes makes it very hard for beginners to figure out how to write classes. It is not obvious what annotations are available at any given point (@Inject, @PreDestroy, etc). The type hierarchy does not help for finding similar implementations – since there is no hierarchy
- The e4 workbench designer for the workbench model (.e4xmi) is nice, but unstable (failed to load my simple example). Editing the .e4xmi by hand or a tree-like emf editor is cryptic and less user friendly than the plugin.xml editor
- The plugin.xml is still necessary. So with the .e4xmi file we now have two .xml files that are relevant. I would like to see just one or none.
- Still too many technologies to master: Extension Points, OSGi, Workbench Model, EMF, Annotations, SWT, JFace.
“Simplify the programming model” is stated as e4’s first objective (e4-summary.odp), but I don’t think this is true at present.
#2 Still big and intimidating
I often hear the Eclipse is big, bulky and intimidating. The Eclipse e4 download packs 230 MB and all the UI clutter we are used to – but many newbies find confusing.
#3 No killer feature
If a customer asked me about migrating to e4 for a product that launches in Q4 2010, I couldn’t really recommend it. At this point I don’t see any “must have“ features yet — especially for the folks that have 3.x apps up and running.
This is bad and a bit of a catch-22 situation:
- Without some “must have” features people are going to stay with what they already know (3.x) instead taking the risk of using something new
- The longer people wait to use e4 the longer it will take to reach critical mass and a high level of maturity (i.e. most bugs found)
Looking forward to your opinions – especially if you disagree.