Modular Java Applications with OSGi

No more JAR-hell. No more wondering which version of the code you have.

Modularity with Equinox OSGi

Equinox OSGi is a lightweight, high performance, module system for Java. It is the reference implementation of the modular OSGi framework specification.

Using Equinox as your runtime you get full control of the running code including the ability to dynamically reconfigure the system and rock solid performance that powers many of the largest commercial systems. Think of Equinox as an extension of your JRE.
The Equinox project includes a wide array of standard and additional service implementations in support of scenarios from embedded to desktop to server-side.

Equinox is standard

Equinox technology is based on a set of specifications from the OSGi Alliance. The core specification for the modularity framework is the basis of JSR-291 and Equinox is the reference implementation of both. With Equinox you not only get the power of standards, you are using the gold standard implementation.

Equinox runs your code everywhere

Mobile computing, Rich clients, Web 2.0, JEE, Cloud computing, Virtualization. The number of computing platforms is exploding. Equinox enables modularity in all of these environments. Not only that, in many cases you can reuse your bundles across the computing landscape.

Equinox scales

Equinox scales up to thousands of collaborating components. Aggressive use of lazy activation and lazy loading mean that your application takes only the resources required. At the other end of the spectrum, Equinox itself is small enough to run in embedded wearable computers, telematics units and process control systems.

Modularity = Agility

Highly modular systems are more agile. Look at Eclipse itself. Equinox is the basic framework under all Eclipse applications. By using Equinox you can bring that level of flexibility and agility to your project and your business. Create new product configurations without writing code. Embed existing business logic in new applications. Get the solution you need when you need it.

Equinox changes with you

Requirements change. It’s a given. Using Equinox you can build highly dynamic systems that adapt to current users and requirements. Deploy a new application that needs additional function? Add the function without taking the system down. Done with something? Unload it and save resources.

Provisioning with Equinox p2

Equinox p2 is a comprehensive provisioning platform for delivering and managing RCP applications, OSGi runtimes, tools, servers and embedded systems.

Using integrated multi-threaded download, bundle pooling and state-of-the-art constraint resolution technology, p2 gives you one-stop-shopping for defining, installing and managing complex software systems.

Manage your complete install

Traditional installers don’t know about Eclipse bundles and features, they simply copy files around and set parameters. They also stop short of updating installed function. p2 has deep knowledge of how Eclipse works and gives you full control of all aspects of your Eclipse install from program and VM arguments to start-levels to bundle configuration. There is no need to use disparate tools for install, update and management of your system.

Pool your resources

If your users have many Eclipse-based systems installed on one machine, p2’s bundle pooling will save disk space, download time and bandwidth. Bundles installed for one profile can be pooled and used to run other profiles. Any given bundle need only be downloaded and installed once to be available to all p2 profiles.

Extensible API and Open Format

Today’s systems are composed of many different technologies. Each runtime has its own requirements and configuration quirks. WARs, JARs, RPMs, MSI, executables etc. all work differently and integrate differently. p2’s extensible touchpoint mechanism adapts by using platform-specific code to interact with runtimes and install components.

Simplified workflows

Installing and managing complex systems can be challenging. p2’s simplified workflows give end-users natural metaphors, like drag-and-drop, to manage their software. Application developers can compose and integrate new provisioning interfaces by reusing p2’s GUI components, or design a completely new workflow based on p2’s solid API.

Avoid runtime surprises

Unlike previous Eclipse management technology, p2 knows exactly what you are and will be running. By separating the description of your system from the system itself p2 allows you to reason about installation changes before committing them. No more runtime surprises or wondering what you are actually running. If p2 can install it, Eclipse can run it.

Runtime Packages from Eclipse RTP

The EclipseRTP project delivers pre-configured EclipseRT packages that allow you to start developing with the Eclipse runtime quickly – without having to find your way through the jungle of p2 repositories.

Equinox and p2 provide the basis for all packages. This means that a package can be extended and configured using all the standard Eclipse tooling. In addition, the packages can be used as a target platform by consuming the provided p2 repository or by downloading and running the packages standalone.

Licensing & delivery

The RTP packages are licensed under the EPL and like all Eclipse tools and frameworks, can be used to develop open source or commercial software. Maintained by Eclipse committers, the packages will be delivered and updated during the regular Eclipse release cycles.

Environment

While all EclipseRT technologies are implemented using Java, the RTP packages are able to run on nearly every environment. To demonstrate this, the project also provides several cloud images that have the RTP packages pre-installed.