---
title: "The OSGi ecosystem roadmap"
chapter: "00"
---

# The OSGi ecosystem roadmap

OSGi is Java's mature **dynamic module and service system**. It gives every
module a precise public boundary, resolves dependencies before code runs, and
lets services appear or disappear while the process stays alive.

## Explain it like I am five

Imagine a city made of Lego buildings:

- a **bundle** is one building;
- an exported package is a public door;
- an imported package is a door another building needs;
- a **service** is a job advertised in the town square;
- the **framework** is city hall: it checks doors, starts buildings, and keeps
  the town-square registry accurate.

A bundle cannot secretly see every other bundle. That rule is the source of
OSGi's power—and of most beginner confusion.

## Current baseline, August 2026

| Layer | Current stable reference | What the number means |
|---|---|---|
| Specification | OSGi Core R8 and Compendium R8 | Standard contracts |
| Apache Karaf | 4.4.11 | Managed runtime distribution; supports OSGi R8 |
| Apache Felix Framework | 7.0.5 | Lightweight framework implementation |
| Eclipse Equinox | Eclipse Platform 4.40 stream | Framework plus Eclipse runtime ecosystem |
| bnd / Bndtools | 7.3.0 | Bundle build, analysis, resolution, testing, baselining |

Felix subprojects have independent versions. For example, HTTP, SCR,
Configuration Admin, Gogo, and Web Console do not inherit the Framework version.
Always pin and verify each component rather than writing “Felix 7” for the
whole stack.

## The stack in one picture

`Java VM → OSGi Framework → bundles + service registry → component model →
runtime distribution → application`

Felix and Equinox implement the Framework. Declarative Services (DS) implements
a component model on top. Karaf packages a framework plus shell, features,
configuration, logging, provisioning, and operations.

## When OSGi fits

OSGi is strong when independently versioned modules, long-lived runtimes,
plugins, device/edge software, in-process isolation, or controlled live
reconfiguration matter. It is not automatically better than a plain Java
application. Dynamic behavior has an operational cost.

## Feynman check

Explain the difference between specification, framework implementation,
component model, build tool, and runtime distribution without using their
product names.
