Sometimes it feels like I’m stalking Frank Gerhardt. Or maybe I just like listening to German speakers. Whatever the case, it seems that almost every single talk I’ve attended has been presented by Frank, or one of his countrypersons…
This afternoon, I’m attending “Server-Side Eclipse – the dynamic server platform based on OSGi” presented by Jochen Hiller (Deutsche Telekom AG, Germany), Frank Gerhardt (Gerhardt Informatics).
“Server-side Eclipse” is a term that shocks some people. What does it mean for Eclipse to run on a server? If perception is reality, then perception tells us that “Server-side Eclipse” means “Eclipse IDE for Java Developers running on the server”. What we really mean is “Equinox running on the server”. Equinox is the component model, based on the OSGi specification, that underlies Eclipse. An Eclipse product (like Eclipse IDE for Java Developers) is a collection of plug-ins (or bundles) and Equinox is what makes sense of it all and makes it work. Equinox can help you make a server-side application based on bundles; Equinox makes sense of it all.
One of the big deals in Equinox is services. Bundles can register services with the service registry. The notion of a service is very similar to that of a web service, but with much less weight. Services are registered and unregistered, they can be discovered, and behaviour invoked. One of the tricky things about services is that they can easily come and go. By their nature, bundles are very dynamic and can be started, stopped, unloaded, updated, etc. at any time. As bundles come and go, so do their services. ServiceTrackers help us keep track of the comings and goings of services; we can use a ServiceTracker to get a handle on a service, but we need to be careful not to depend on that handle being valid forever. As a general rule, you get the service, use it, and then unget it. The next time you obtain the service, it might be an entirely different implementation. Or it might not even be there. You need to be ready for that.
The demo they’re running is similar to a tutorial/demo that I built a couple of weeks ago. Their demo differs in that they’re showing a lot more of the general coolness of dynamically installing, starting, and stopping bundles. Their demo also takes it one step further than mine by showing an Über-cool RESTful web service (an Equinox service implementation of a RESTful web service).
In what I am certain is an attempt to make my demonstration seem pitiful and weak, they’ve shown how a new version of a bundle can be installed and started alongside the old version, which is then stopped. All this, while a client is constantly pinging the server and showing us how the output changes as the new bundle is brought online. The gauntlet has been thrown, my next screen cam is going to show all this. And more…
My big takeaway for this session is “Today is good choking”.