The key concept of bundle compatibility is managed with version numbers and version number ranges. Whether the major, minor, or micro version is changed, it indicates to the end consumer whether or not the change is backward compatible. Version ranges can be used to ensure that the appropriate version is selected at runtime.
Being able to design an Eclipse plug-in or OSGi application involves a repeated process of breaking down the components into smaller indivisible modules until they are loosely coupled to their neighbors and highly cohesive. Standard patterns help this, and following best practice allows for maximal flexibility.
The next chapter will present reactive applications based on the OSGi event bus.