About the Knopflerfish OSGi distributions
- Knopflerfish 2.x (OSGi R4), the current version
- Knopflerfish 3 (OSGi R4 v4.2), the next major version
- Knopflerfish 1.x (OSGi R3)
About the Knopflerfish OSGi R4 distribution
The objective is to implement the OSGi R4 specifications fully. This includes the:- Core Specification
- Service Compendium
- Mobile Specification, MEG - Not released yet.
Additionally, all Knopflerfish bundles from the 1.x version is included in the 2.x release.
The Knopflerfish 2 version, implementing OSGi R4 version has been released and is available for download.
With this release, the KF framework is feature complete in all OSGi R4 mandatory parts. Of the optional parts only some security items remain. All other parts are implemented and fully functional.
The desktop and framework commands have been updated in a number of ways to reflect new features in R4. The
The table below describes what parts have been implemented and what parts are still pending in the KF 2.0.0 release.
| Core Specification - OSGi framework | |||
| Module | Status | R4 Support | Description |
| Security Layer | In Progress | Full | Note! no keystore integration yet |
| Module Layer | Done | Full | To use the extension bundle support you need to use a wrapper script that will restart framework when needed. An example shell-script is included (OSGi/KF2). |
| Life Cycle Layer | Done | Full | |
| Service Layer | Done | Full | |
| Framework Services | Done | Full | Start Level, Permission Admin and URL Handler services have been updated to conform to R4 added new Conditional Permission Admin service. |
| Service Compendium | |||
| Module | Status | R4 Support | Description |
| Log | Done | Full | |
| HTTP | Done | Full | |
| Configuration Admin | Done | Full | |
| Preferences | Done | Full | |
| User Admin | Done | Full | |
| IO Connector | Done | Full | |
| Metatype | Done | Full | |
| Declarative Services | Done | Full | New in R4 |
| Event Admin | Done | Full | New in R4 |
| Service Tracker | Done | Full | |
| Knopflerfish Extras | |||
| Console, Framework Commands | Done | NA | New commands: closure, resolve, findbundles. The output of the bundles command has been changed (fragments and hosts are indicated, last modified is listed in verbose output, it is possible to sort on last modified) |
| KF Desktop | Done | NA | Fragments, hosts and required bundles are listed on the Closure tab. Symbolic name and last modified information is displayed on the Manifest tab. |
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.
Also see https://www.knopflerfish.org/svn/knopflerfish.org/trunk/osgi/bundles/metatype for implementation details.
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.
See https://www.knopflerfish.org/svn/knopflerfish.org/trunk/osgi/bundles_opt/commons-logging/readme.txt - SOAP The SOAP connectivity kit allows for easy export of
OSGi services as SOAP services, using the Apache Axis SOAP lib.
See https://www.knopflerfish.org/svn/knopflerfish.org/trunk/osgi/bundles_opt/soap/readme.txt - Serial port support
Serial ports are supported via the OSGi device model and the
javax.commAPI. 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.
See the JUnit readme for more info.
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.
See Jini
- X10 support
The X10 support uses code from the Java X10 Project, http://x10.homelinux.org.
see x10



