Hands-on OSGi tools in a day

OSGi, which stands for "Open Services Gateway Initiative", is a service platform which facilitates the organization of code into reusable components called bundles. A bundle can be thought of as a Java archive (JAR) file with extra metadata describing its name, version, services offered, and dependencies to other bundles, among other things. The visibility of packages outside of a bundle can also be specified via metadata, giving developers a powerful way of separating their code into API and non-API packages. OSGi is not a new technology; it is used as the foundation of many software projects, perhaps the best known of which is the open-source Eclipse platform and the countless adopter products that are built on top of it. A developer extends Eclipse by writing plug-ins that add new functionality to the base platform. A plug-in is an OSGi bundle, and in fact Eclipse itself consists entirely of bundles. A plug-in can declare its dependencies to bundles in the base platform and use the features and services provided therein. In this fashion, complex applications can be built in a modular way. Although Eclipse is an example of an application built on OSGi technology, it is not the type of OSGi applications that the Rational development team is writing tools for. The OSGi applications this workshop refers to are actually enterprise OSGi applications. In essence, enterprise OSGi applications combine OSGi technology with enterprise technologies specified by the Java Enterprise Edition (Java EE) platform. Rules for how these separate technologies should integrate and behave are described in the OSGi Service Platform Enterprise specifications. Enterprise OSGi applications are meant to be run within an application server container such as IBM's WebSphere Application Server (WAS), which supplies bundled versions of the Java EE APIs for an application's use. Support for OSGi in WAS is based on components developed in the Apache Aries incubator project. In addition to the base OSGi Service Platform Enterprise specifications IBM provides technologies that complement the packaging and sharing of OSGi bundle. To package bundles together into a single cohesive application IBM introduces the concept of an Enterprise Business Archive(EBA). An EBA contains a number bundles along with meta-data that describes the dependencies and interactions of the OSGi application. This EBA can then be easily deployed to WebSphere application server. For those that are familiar with J2EE an EBA is very similar to a J2EE Enterprise Archive(EAR) file. IBM also provides the notion of a composite bundle. This kind of bundle is not a complete application but an aggregate of a number of other bundles. This composite bundle can then be used directly in an OSGi application or shared between a number of OSGi applications. Many developers are looking for a technology that provides a service-oriented, component-based environment that offers standardized ways to manage the software lifecycle. The OSGi programming model gives them this capability. In order to aid these developers to fully utilize this OSGi programming model the Rational Application Developer product is available with a rich set of OSGi development tools.