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.

Eclipse RT Logo

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.

The Equinox project was founded by and is co-led by EclipseSource team members.

Learn more about Equinox OSGi

Why Equinox OSGi

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.

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 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 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.

Equinox scales

Equinox scales up to thousands of collaborating components. Agressive 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.

Equinox OSGi Tutorials

OSGi for Eclipse Developers

Chris Aniszczyk, Bernd Kobl, Martin Lippert - April 23, 2009

This presentation provides an introduction into OSGi and discusses the general concepts (import package, require bundle, dynamic nature of OSGi, versioning). It introduces the services concept that is core to modular software development and describes the most useful compendium services (log, http, declarative services, event, config admin).

Podcast - OSGi and Equinox

Jeff McAffer - December 17, 2007

In this podcast, Jeff McAffer, Eclipse Equinox Project Lead, discusses Eclipse membership in the OSGi Alliance, the factors motivating the adoption of OSGi as the component model for Eclipse, the cool places that OSGi turns up, and the rosy future of OSGi and Equinox.

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.

Learn more about p2

Why p2?

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.

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.

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.

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.

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.

p2 Tutorials

Provisioning RCP applications with p2

Ian Bull - September 15, 2009

The p2 provisioning platform has replaced Update Manager as a mechanism for managing Eclipse based applications. While p2 is most notably recognized for managing Eclipse installs, p2 has been designed as a general purpose provisioning platform for OSGi and Eclipse RCP. In this webinar, you will see how you can use p2 to manage your own RCP based applications.

Remote Provisioning With p2

Jeff McAffer - May 4, 2009

In this video Jeff McAffer, demonstrates how to define, provision and manage remote Eclipse, Equinox and OSGi-based systems using p2 technology. The presentation highlights the extensibility and flexibility by showing a combination of standard p2 function and EclipseSource extensions for remote scenarios. Upcoming videos build on this base and show the use of p2 in server and cloud-based environments.

Introduction to Equinox p2

Pascal Rapicault - IBM - July 14, 2008

Equinox p2 is a component of the Eclipse Equinox project. p2 provides a framework for provisioning Eclipse-based applications. It replaces Update Manager as a mechanism for managing your Eclipse install, searching for updates and installing new functionality.

p2 UI Walk-Through

Pascal Rapicault - IBM - July 14, 2008

  • Overview and installation
  • Installation from a local site
  • Update of installed software
  • Installation through dropins folder

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.

Eclipse RTP Logo

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.

Learn more about RTP

More

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.

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. The packages will be delivered and updated during the regular Eclipse release cycles.