Oscar is an open source implementation of the Open Services Gateway Initiative (OSGi) framework specification; the goal is to provide a completely compliant implementation of the OSGi framework specification. Oscar is currently compliant with a large portion of the OSGi 3 specifications, although certain compliance work still needs to be completed. Despite this fact, the OSGi framework functionality provided by Oscar is very stable and is in use by many people.
Even though OSGi targets the embedded device market, the framework is ideally suited for experimenting with component-oriented and service-oriented computing in general. For example, Oscar can be easily embedded into other projects and used as a plugin or extension mechanism; it serves this purpose much better than other systems that are used for similar purposes, such as Java Management Extensions (JMX). For some example projects that use OSGi, refer to the community section below.
One of the my personal targets in experimenting with Oscar is to realize dynamic assembly of applications, where only skeleton applications exist and nearly all functionality is provided and extended at run time by downloading new components and services. Other areas of interest include security and techniques for ensuring quality properties of applications in such a dynamic, component-based environment. Stepping back futher, the notion of managing and maintaining many hundreds if not thousands of such service containers dispersed across the Internet is also interesting and harks back to many software deployment issues.
Of course, since OSGi is intended for embedded device applications, I am also keeping my mind open for interesting applications in those areas as well. The OSGi framework is small and reasonable lightweight, which makes it well suited for small devices, like PDAs. For example, here are some screenshots of Oscar running on a Sharp Zaurus.
OSGi is an independent corporation that is defining a specification to deliver services over wide-area networks to local area networks and devices. OSGi has over 70 participants and is currently enjoying industry-wide support. For more more information on OSGi or to retrieve the specification, refer to the OSGi web site.
Oscar is intended to implement the framework portion of the OSGi specition and it is currently compliant with a large percentage of the version 3 specification release. Standard OSGi framework-related service implementations are also provided (such as Package Admin and Start Level), but other non-framework-related services are only available separately. There are a few minor known issues and you are encouraged to send email if you have any specific compliance issues that need to be addressed.
In OSGi, components are called bundles. A bundle is simply a JAR file containing a manifest file and some combination of Java classes, native code, embedded JAR files, and resources. A simple tutorial is available that demonstrates how to write progressively more complex bundles. Another good way to learn how to write a bundle is to examine the example bundles included in the Oscar bundle repository. Since OSGi is a standard, it is also possible to find documentation on writing bundles from other sources; for example, Sun provides a tutorial for both Windows and Solaris.
Any questions? Want me to list your project here if it uses Oscar? Want to contribute? Contact Richard S. Hall.