org.osgi.framework.startlevel
Date: 2016-06-24

@Version(value="1.0")

# Package org.osgi.framework.startlevel

Framework Start Level Package Version 1.0.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  BundleStartLevel | Query and modify the start level information for a bundle.
  FrameworkStartLevel | Query and modify the start level information for the framework.

## Package org.osgi.framework.startlevel Description

Framework Start Level Package Version 1.0.

The Framework Start Level package allows management agents to manage a start level assigned to each bundle and the active start level of the Framework. This package is a replacement for the now deprecated `org.osgi.service.startlevel` package.

A start level is defined to be a state of execution in which the Framework exists. Start level values are defined as unsigned integers with 0 (zero) being the state where the Framework is not launched. Progressively higher integral values represent progressively higher start levels. For example, 2 is a higher start level than 1.

`AdminPermission` is required to modify start level information.

Start Level support in the Framework includes the ability to modify the active start level of the Framework and to assign a specific start level to a bundle. The beginning start level of a Framework is specified via the `Constants.FRAMEWORK_BEGINNING_STARTLEVEL` framework property when configuring a framework.

When the Framework is first started it must be at start level zero. In this state, no bundles are running. This is the initial state of the Framework before it is launched. When the Framework is launched, the Framework will enter start level one and all bundles which are assigned to start level one and whose autostart setting indicates the bundle should be started are started as described in the `Bundle.start(int)` method. The Framework will continue to increase the start level, starting bundles at each start level, until the Framework has reached a beginning start level. At this point the Framework has completed starting bundles and will then fire a Framework event of type `FrameworkEvent.STARTED` to announce it has completed its launch.

Within a start level, bundles may be started in an order defined by the Framework implementation. This may be something like ascending `Bundle.getBundleId()` order or an order based upon dependencies between bundles. A similar but reversed order may be used when stopping bundles within a start level.

The Framework Start Level package can be used by management bundles to alter the active start level of the framework.

Bundles wishing to use this package must list the package in the Import-Package header of the bundle's manifest. For example:

     Import-Package: org.osgi.framework.startlevel; version="[1.0,2.0)"