In this presentation, recorded at a recent Skills Matter meet up, Neil Bartlett gives a brief introduction to OSGi, the dynamic module system for Java. It has basically become the industry standard for modular Java although it has yet to be fully integrated within Java. OSGi provides a modular delegation system enabling loading of dependencies in an efficient manner instead of scanning through all of the class loads. OSGi dependencies also maintain versioning to ensure a compatible version of a dependency is loaded, it also enables different versions of the same library to be loaded at the same time.
After introducing OSGi Neil moves on to discuss component oriented (COP) using OSGi and how this is an improvement on OOP. Neil explains that OOP which aimed to enable code re-use didn't really work out how it was planned, very few classes can be removed from an application and then used within another application because of their dependencies on other classes. One solution to re-use is to not try but instead leave the class where it is and call it from there, basically SOA.
Neil explains that OOP isn't really broken but it's just not the complete answer -- COP extends this to make it easier to write re-usable code. COP is basically building on top of OOP but more capable of running on its own and using the services of other components. This is a great example of how OSGi can be used.
Neil provides a demonstration of how this theory can be put into practice using a mailboxes demo. How the component can be dynamically updates as more components are services become available. He also demonstrates how easy it is to get things running with OSGi and add and remove packages.
Editor's Note: The slides for this presentation will be made available shortly