I presented my talk on Eclipse Rich Client Platform today at The Server Side Java Symposium in Barcelona. The talk started well and I think it ended strong, but I feel like it dragged in the middle. I decided that, given that the audience expects heavy technical discussion at a Server Side conference, I’d discuss the Eclipse extension point mechanism in more depth than I normally do. It’s such a powerful mechanism, and I think it’s a really important part of the Eclipse platform; but it sure is hard to talk about with a group that’s never built an Eclipse plug-in.
Strangely, I think that one of the hardest things for people to understand is the fact that all extension points are treated equally. There are no special ones; the extension points defined by “platform” code are treated the same way as extension points you create. I think that I may change the way that I talk about them.
I’ll probably start by talking about a handful of “built-in” extension points like popupMenus
and actionSets
. The discussion is relatively simple: “if you want to add a menu item to the context menu, you create an extension to the org.eclipse.ui.popupMenus
extension point. You have to provide text for the menu, an icon, the name of a class that implements the behaviour, yadda, yadda, yadda, …”
Next, I’ll discuss how the extension point mechanism is totally open and that there really are no special “built-in” extension points. The so-called “built-in” extension points are just extension points defined in plug-ins that are part of the platform. Anybody can define new extension points in their plug-ins and those extension points are just as important as the others.
I’ll hook this discussion into the construction of domain-specific platforms and extensible architectures. The idea is that you can open your application to extension by defining your own extension points. I do this in all my RCP examples. In the eBay example, I defined an extension point that is used to contribute an auction provider (thereby making the extension provider completely pluggable). I also use numerous extension points in the task organizer and Sudoku applications.
I’ll test drive the changes to the presentation before I present at OSCON at the end of July.