Yesterday, the OSGi session took place in Hotel East in Hamburg. Peter Kriens, the OSGi evangelist showed a wonderful Zen Presentation on OSGi. I wrote a lot during his talk which happens to me very seldom. Here are the core statements I understood:
- The core difference between usual plugin architectures and OSGi is that OSGi concentrates on collaboration of the components.
- OSGi delivers a controlled environment, in which the question if a component runs or not can be answered in beforehand.
- OSGi bundles use metadata (about versions, dependencies, etc) to predict an error, not discover it in runtime.
- OSGi has a very narrow API containing the minimal common part.
- OSGi consists of module, life cycle and services layers. The initially developed services layer required smart class loading mechanisms (module layer).
- The module layer is desigend to control the class loading machanisms (e.G. structureal class loader hierarchies instead of a linear classpath)
- Life cycle layer adds a management API (e.G. inform the others about installation event)
- Separation of concerns is promoted by definition of services for different tasks.
- Services are used for decoupling of system parts (This is a standard application of service-orientation).
- OSGI makes dependencies explicit (private, import, export)
- OSGI tries to make the system managable, taking dynamics and lifecycle as fisrst-class citizens
- OSGI will be extended to support distribution: the team works on policies, SLAs, etc…
I liked the talk and the way how Peter Kriens addressed the problems of OO. I was confirmed in some ideas about coupling that will be layed out in my thesis. After the presentation we had a delicious meal and wraped up the evening with interesting discussion about pros and contras of OSGi. Peter Friese showed me some remote OSGi staff, he was playing with. The lack of documentation in this area makes it a little difficult, but I hope he will post some news on it. As usual, you can find other pictures in my FlickR gallery.