Unless you live under a rock or you’re not using Eclipse, you can’t possibly have missed it: Eclipse Juno (or 4.2)
If you’re unsure what happened to 3.8 or 4.0 and 4.1, here is the story in a nutshell: A small team of Eclipse developers was concerned about the state of the platform (platform is the part of Eclipse that knows what a plug-in is, how to find, install and load them and arrange them in a neat way called “perspective”). When the platform was developed 2004, it was based on VisualAge. Don’t ask. Like all “visual” tools, it had … issues. Many of them were hardcoded into the platform. For example, there are many singletons in there. Many. Testing the platform is either a nightmare or slow or both.
The e4 team decided that something needed to be done. Only, it was risky. And it would take a long time. Which meant that the PMCs probably wouldn’t approve.
Therefore, they came up with a cunning plan: Develop a new platform (e4) alongside the official Eclipse releases. e4 would get a “compatibility layer” that would allow to run the old junk (like the JDT) but it would also allow to write plug-ins in a new, clean, understandable way. For example, in 3.x, you can use this code to get the current selection:
ISelection selection = getSite().getWorkbenchWindow().getSelectionService().getSelection(); Object item = ((IStructuredSelection)selection).getFirstElement();
The same code looks a bit different in e4:
@Inject void setSelection(@Optional @Named(IServiceConstants.ACTIVE_SELECTION) Contact contact) { ... }
e4 will call this method every time the user selects an instance of Contact in the UI.
The whitepaper gives some more details. Lars Vogel wrote a pretty long Eclipse 4 RCP tutorial.
After two years, e4 was deemed stable enough to make it the default release.
Conclusion: e4 doesn’t get rid of all the problems (p2, OSGi and SWT are still there) but it’s a huge step forward.
Related links:
- Eclipse 4 (E4) – Die nächste Generation von Eclipse RCP (presentation by Jonas Helming with slides)
- Eclipse 4 RCP tutorial by Lars Vogel