After lots of work, ECM (Everit Component Model) is finally released. In the scope of the project several modules were developed:
- org.everit.osgi.capabilitycollector: A simple library that helps tracking references (currently OSGi services and Bundles). ECM uses this library to be able to track the references of components.
- org.everit.osgi.ecm.util.method: Helper methods to generate and parse method signatures and to locate methods based on the 112.9.4 Locating Component Methods chapter of OSGi Compendium specification.
- org.everit.osgi.ecm.metadata: To create a component, the engine needs a Class type and metadata that belongs to it.
- org.everit.osgi.ecm.annotation: Annotations of ECM, that can be used to describe the component functionality of a class
- org.everit.osgi.ecm.annotation.metadatabuilder: A simple utility library that can be used to generate Metadata (that can be passed to ECM Container Factory) from annotated classes.
- org.everit.osgi.ecm.component.api: API for ECM based Component development. This module contains interfaces like ComponentContext.
- org.everit.osgi.ecm.component.ri: The most important module that contains the reference implementation of ECM
- org.everit.osgi.ecm.extender.api: Constants that can be used by programmers who want to use the extender functionality instead of activating their components programmatically.
- org.everit.osgi.ecm.component.ri: Programmers who do not want to depend on the reference implementation module (but only on annotations) can use the extender to let their annotated classes picked up automatically. To do that, they have to provide a capability in their bundle that tells which class(es) should be picked up by the extender.
- org.everit.osgi.linkage.api: A general interface structure that can be used to analyze Resources and Wires in the system. ECM implements this API so it is possible to query components, their capabilities (OSGi services) and requirements (references) via this API. Later a bridge to DS might be implemented.
- org.everit.osgi.ecm.component.webconsole: A webconsole component that shows the state of the components and containers.
During the development, I had a speech at EclipseCon where I compared Declarative Services with the concept of Everit Component Model. It was not my best presentation, but it is a good way to start if you watch it: https://www.youtube.com/watch?v=LX1LwPLFDl8