Search:       RSS, Atom

Site navigation:

Tools for the OSGi Framework

Our research of type-based component compatibility verification resulted in the development of several tools relevant for the industrial applications of the OSGi framework and enhancing its capabilities.

Semantic Versioning of OSGi Bundles

OSGi framework resolver relies on version numbers correctly expressing package compatibility. Our automated version identifier generation method ensures that the version IDs are provably correct according to the OSGi semantic versioning scheme, in particular, that they faithfully represent the syntactical differences of public interface between two subsequent component revisions.

We provide a freely accessible service to correctly version OSGi bundles according to the Semantic Versioning specification – submit two bundle revisions, the latter one will have Export-Package and Bundle-Version headers correctly set.

Further we provide an Ant task implementation which uses the type-based bundle comparison to correctly set the version numbers in an update bundle revision.

Compatibility Checking Resolver

This is an enhanced OSGi resolver which prevents normal bundle update if it has an indication that the new version will break compatibility with the installed version’s clients/consumers. Not depending on the (often unreliable) bundle and package version numbers, it ensures stronger reliability of the bundle resolution and update beyond the standard level (which uses name-based, not type-based, bundle feature comparison). The use of the type-enhanced resolver therefore maintains run-time type safety of running OSGi applications.

Bundle Compatibility Verifier

This is a user-level tool which enables the user to check for incompatibilities in potential update bundle versions. Its implementation consists of a checking (comparator) bundle, a bundle cache access facade, and a shell bundle that provides a user interface to the checking tool. Two implementations are provided, for Apache Felix 1.0.x and Knopflerfish 2.0.x framework implementations.

Technically, the tool uses a representation of the bundle’s surface features called Bundle types with automated reconstruction from the bundle .jar file. The bundle classes are represented and compared by the Java types library.

The OBCC libraries

The libraries realize type-based bundle compatibility checks used in all of the above tools. They take the JAR files of two OSGi bundles – e.g. a currently installed one, by pointing to its bundle ID, and its update, by pointing to the update location – compares them and returns an indication of compatibility. This is backed by a detailed comparison data in the form of a complete tree of mutual differences of corresponding features down to class field level.

GUICA – The GUI for Component Administration

Guica is a tool which makes it easy to manage components in a running OSGi framework, effectively replacing (most of) the command line interface. It provides an intuitive GUI and is framework independent.

The development site of these tools is hosted by Assembla, and the tools are available under the Creative Commons Attribution-NonCommercial-ShareAlike license.