| 1) What are the key factors to be evaluated when considering OSGi for an application?
First and foremost, does your application need to be extensible?
For example, do you allow end-users to plugin their own strategies, adapters, etc? Or do you allow third-party vendors to provide their own service implementations by using some form of SPI? Or even simply do you intend on growing your application by providing additional or alternative implementations to your applications services?
Secondly, is your application part of a larger eco-system of services and applications?
For example, consider an application that needs to interact with dozens of other applications, libraries, plugins, infrastructure services, etc. Such an application needs to change often as its dependencies change.
Finally, does your application need to be flexible? Does it need to pick and choose different services as needed?
For example, you may originally decide to use a RDBMS-based persistence service, but then find out you need to move to a distributed cache-based persistence service. You may originally decide not to be transacted, but later move to a transacted system, etc.
In summary, OSGi helps out with these three fundamental albeit subtle application qualities: extensibility, modularity (integration), flexibility.
| 2) What are the implementation(s) used for the case study in the book?
The book uses Apache Felix, however it also highlights any differences should one prefer to use Eclipse Equinox.