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.
- Download the OSGi Version Generator ant task (created in 2009 by Jaroslav Bauml as part of PhD research, Creative Commons Attribution Non-commercial Share Alike license)
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.
- Download the OSGi Bundle Compatibility Verifier tool v1 – this is the first version of OBCC, and second release of OBCC.
- Tool concepts documentation in the form of an draft article.
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.
- Read the basic tool description
- Visit project page at Assembla
The development site of these tools is hosted by Assembla, and the tools are available under the Creative Commons Attribution-NonCommercial-ShareAlike license.
— By Premek Brada on 2 prosinec 2010
Related
Analyzing Component Models Automated OSGi Version Number Generation - moved