This section covers some of the best practices that can be applied when designing modular systems, and in particular, modular applications that are built on either OSGi or using the standard Eclipse extension mechanisms.
It is very common for OSGi applications to have a separate API and implementation. This allows the API to be versioned independently from any implementations that may follow.
To implement this effectively, most APIs are specified in terms of pure Java interfaces. However, it is possible that classes are present as well; exceptions must be represented as classes, as are common POJO data structures.
Eclipse documents the interfaces that are not suitable to implement and the POJOs that are ...