About the Knopflerfish OSGi R3 distribution
The Knopflerfish release contains:See bundle docs for detail information on all bundles.
Also, the source code kit includes an easy-to use Ant build system for creating bundles.
Components defined by OSGi R3
The OSGi R3 specification defines several components, which could be expected to exist in OSGi implementations. However, it should be noted that no service is required to be present.
The OSGi specification currently supported by Knopflerfish is R3 and includes the the R3 components listed below.
- Base framework The framework allows installing, start, stop,
update and uninstalling of program or data components called
bundles. Bundles are standard jar files
The framework contains the following internal components:- PackageAdmin service. The PackageAdmin service allows bundles to inspect other bundles packages.
- PermissionAdmin service. The PermissionAdmin service allows bundles to manage the permissions of other bundles.
- StartLevel service. (new in R3) The StartLevel service allows grouping of bundles into startlevels.
- URL service. (new in R3) The URL service allows bundles to safely add URL schemas to the framework.
- ServiceTracker utility The ServiceTracker provides utilities for handling dynamic services.
- Log service The log service provides logging functions for other bundles.
- HTTP service The HTTP service provides a web server where applications can publish servlets or data.
- Configuration Manager The Configuration Manager manages persistent storage of application data.
- Device Manager The Device Manager manages software components related to physical device drivers.
- UserAdmin service The UserAdmin service provides functionality for users, groups and access control.
- Preferences service (new in R3) The Preferences service provides API and functionality for storing bundle preferences.
- Position API (new in R3) The Position API allows applications to handle position-related data in a uniform way.
- Measurement API (new in R3) The Measurement API allows applications to handle measurements in well-defined units.
- Metatype API The Metatype API allows applications to publish typing information for configuration data.
- XML utility The XML utility class provides a template class for publishing XML parsers.
Note: All components following the OSGi R3 specification has been known to pass the OSGi R3 tests (in external tests performed by Makewave (formerly Gatespace Telematics)). The Knopflerfish distributions cannot formally call itself "OSGi R3 certified", since only OSGi members are allowed to use this term. Instead, we use the term "designed to be compliant with OSGi R3", which is an allowed term.
Knopflerfish components
The Knopflerfish distributions contains a set of other useful components:- Desktop The desktop is a graphical tool for managing a running framework. The desktop can be extended using plug-ins.
- Log utilities Utility classes for easier logging.
- Misc utilities Misc utility classes for text, job and IO handling.
- Console
The Console service provides means for command-based tools to
publish their commands. Any bundle can provide commands.
Included in the console component is:- TTY Console Console using stdin/stdout
- TCP Console Console listening to a TCP port
- Log commands Command for handling the OSGi log
- Framework commands Command for handling basic OSGi life-cycles
- CM commands Command for handling the Configuration Management data
- OSGi Metatype XML
The OSGi Metatype XML implementations defines
a platform-neutral format for metatype information, which can be used
by CM and other services needing such information.
See http://www.knopflerfish.org/XMLMetatype for OSGi Metatype XML specification.
Knopflerfish optional components
The Knopflerfish optional distributions contains a set of optional bundles:- Commons logging The Commons logging bundle wraps the Apache Commons Logging API over the OSGi log.
- Serial port support
Serial ports are supported via the OSGi device model and the
javax.comm
API. Implementations from Sun (win32) and RXTX (linux) are used for the included bundles. - JUnit. Developers can install JUnit test cases in a running framework, and test them remotely.
Knopflerfish components available from SVN
Some components in Knopflerfish are currently only available as source code in the Subversion repository. These components can be checked out by anyone and installed into a previously installed KF distribution.
- OSGi Jini support The Jini support follows the R3 Jini API. It uses Sun's reference implementation for the Jini core and Nico Goeminne's driver code.
- X10 support The X10 support uses code from the Java X10 Project, http://x10.homelinux.org.