It is amazingly hard to get application components to cooperate with one another, especially if the need to be dynamically added and removed. The OSGi specification attempts to standardize the integration of very different components to work together. And it tries to do this in such a way that the components can be brought in remotely and added to the larger application with minimal disruption.
Apache Felix is a Java implementation of this specification that is used by ADEP Experience Services. The Java content respository (JCR) that is the foundation for Experience Services can contain executable code, but how that code interacts with other executable code is not defined by the JCR itself. Felix provides the framework for how code executes and interacts other components. It provides a way for components to be started up and shut down properly.
Installing and removing functionality within Experience Services is done with packages. Packages are the basic units of functionality for Experience Services and these packages are OSGi bundles. Felix provides the way for Experience Services to bring packages in, deploy them, undeploy them, start them and stop them without having to restart the whole server.