Using Spring with OSGi is a revolution in the application server
environment. Spring gives you flexibility, OSGi gives you dynamicity,
but complexity can give you a headache! In this talk, recorded at a recent Spring User Group meeting put on by Skills Matter, David Savage reviews the current technology landscape, explores how you can turn
a standalone app in to a resilient, distributed system while taming the
complexity and highlights the benefits and gotchas that you should
consider when moving to this style of architecture.
Dave launches into his talk with a brief introduction to The Open
Services Gateway Initiative (OSGi), which defines an architecture for
modular application development. Features like versioning and
dynamically updating code at runtime are made possible with its unique
class-loading mechanism. OSGi is also an SOA Architecture. An OSGi
service is a Java Object Instance in an OSGi framework. Dave informs us
that the new OSGi 4.2 specification will include features like
transaction support and distributed OSGi for making services of a JVM
visible to other JVMs.
Dave then reviews some of the development tools to build OSGi
applications. These tools include component frameworks like Spring DM,
Guice and iPOJO; build tools like Eclipse PDE, SpringSource Tool Suite,
Tyco and Sigil; and debugging tools of Eclipse, dmServer,
Newton/Infiniflow and Sigil. Dave argues that debugging tools are
currently the weakest type of OSGi development tools.
Finally, he explains design principles and inner structures of Newton
and Infiniflow for developing distributed OSGi. Infiniflow is a
model-driven, distributed, resilient, scalable OSGi runtime which
supports Spring and Spring-DM. Newton is a distributed OSGi framework
that describes distributed systems using the emerging SCA standard.