Module RelayOSGi runtime fieldbook
OSGi · Dynamic Module SystemsView Markdown source

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.

Module RelayIndependent study material · verify runtime details in official project documentation