JavaZone 2007: Using Spring-OSGi in Swing applications
Nils Hofseth Andersen (Capgemini Norway)
The bundle is the main "unit of modularity" in OSGi. A bundle can register services, to be used by other bundles. A bundle is a jar with a special manifest inside. Bundles can have their own lifecycles. Isolation and visibility is achieved through classloaders. OSGi should be very interesting for the people who want to get rid of their app server, as well as thick client (or other standard Java) developers.
Spring-OSGi is a project started by Interface21 to help integration between OSGi and Spring. You get some special OSGi-tags for your Spring config.
Why Swing? If you already have some Swing parts, you don't really want to combine it with SWT in an app (different look 'n' feel, etc.)
Case from Statoil's Java Enterprise Framework. Uses only Swing. Phases of introducing OSGi:
Phase 1: Introduced modules at the code level. Each module has it's own Spring config. Merging these contexts caused several problems (naming collisions, startup time, etc.).
Phase 2: ModuleFactories introduced. Each module is a child appcontext of the app. App still has to know all modules.
Phase 3: ModuleContribution introduced as the interface between the app and the module. Each module packaged as an OSGi bundle.
Planning to open source the JEF framework when it's possible.