Many Eclipse developers have begun to explore the facilities of OSGi, in particular the Service Registry which offers a powerful way to separate the implementation of services from their interfaces, and thus enhance the reusability of components.
However, there is some tension between OSGi's Services and Eclipse's Extensions, because they were both designed independently to perform very similar jobs. Moreover there is no documented approach to integrating the two models, and this has persuaded many developers to choose one over the other. Since Extensions are unavoidable in RCP applications and in Eclipse SDK plug-ins, this means that Services are not much used in those environments. That's a problem, both because RCP application developers are missing out on one of the best reasons for building on OSGi, and also increasingly because they will be unable to use components developed by third parties that do use Services.
In this talk I will describe an approach based on Dependency Injection -- as used in Spring or Guice -- to make Extensions and Services work together. Along the way I will cover the main differences between the two models, and when it is appropriate to use each one.
Neil is a Java developer and consultant specialising in Eclipse RCP and OSGi, in particular their use in large enterprise settings. Recently he has helped a number of financial institutions with their adoption of RCP and evangelises the use of the RCP/OSGi technology platform for both client and server-side development.