Last wednesday I have done a workshop for the Java User Group Görlitz with the topic "OSGi Serviceplatform und Spring DM".
OSGi is a specification for a service-based application framework for Java. While in pure Java you use packages to encapsulate code, with OSGi you have another abstraction layer called "bundles". These bundles can contain many packages and you can define that the bundle "exports" some of these packages. Other bundles can than "import" these exported packages to use that code. You can encapsulate different functionalities into different bundles.
One of the main features of OSGi is the ability to load a bundle at runtime. While the whole application is running you can install, update, start, stop or uninstall a bundle. So when you change some code inside a bundle or you fix a bug, the application don't have to be redeployed to get the new code running.
With Spring DM you can combine the features of OSGi with the Spring framework. This is a great combination to build modular business applications in Java.