D-OSGI-321-001
Developing OSGi Applications with Equinox

Based on the book, OSGi and Equinox: Creating Highly Modular Java Systems by Jeff McAffer,et. al., this is a three-day course that enables you to leverage the capabilities of Equinox and OSGi for developing and deploying enterprise applications. The course covers OSGi fundamentals and advanced topics as well as specific features of Eclipse Equinox, everything you need to develop highly modular Java applications. Along the way they provide deep insights and context to help you to start your own development efforts and keep on track.

Course participants incrementally develop a comprehensive application involving clients, servers and embedded devices, HTTP, servlets, JPA persistence and other web technologies in a series of hands-on focused sessions. You will gain a broad understanding of Eclipse, Equinox and OSGi. This intensive course covers fundamentals of OSGi as well as intermediate topics and specific features of Eclipse Equinox. You will apply the theoretical knowledge in several labs which will give you the practical experience necessary for your projects. All attendees will receive a copy of the OSGi book.

Equinox and OSGi:

Equinox is the core of the Eclipse platform and a major contributor to the success of Eclipse on the clientside(RCP). Bundles (plug-ins) and Extension Points based on the OSGi runtime are solid architectural building blocks. However, Equinox is not limited to the client-side. It can be applied in a general way to build any kind of application, especially servers. Equinox-based servers use the OSGi runtime which provides a service abstraction. OSGi is a dynamic environment where bundles can be installed, started, stopped and uninstalled at runtime. The Equinox vision is to model a community and a repertoire of bundles specifically built for servers, similar to the Eclipse SDK where bundles cover a vast array of functions and purposes for the client. Imagine extending your server with additional functionality by installing some extra bundles, for example a log analyzer for your HTTP service.


Description

The course includes:

OSGi Introduction

  • What is a bundle
  • Modularity
  • Bundle lifecycle
  • How to develop, run and debug bundles

Services

  • Inter-bundle collaboration
  • Defining services
  • Discovering services

Dynamic Systems

  • Dynamic awareness
  • Trackers, listeners, activators
  • Best practices for being dynamic

Declarative Services

  • Compared to traditional service techniques
  • Concepts: components, immediate, cardinality, optional, ...
  • POJO techniques
  • Best practices for naming, markup
  • PDE Tooling

Select OSGi Standard Services

  • HTTP
  • ConfigAdmin
  • Log
  • Preferences

Classloading

  • Classloading in OSGi and Equinox
  • Dependencies and classloading
  • Buddy Classloading policies
  • Context classloader integration

Server Side Equinox and OSGi

  • Solo: Jetty in Equinox
  • Embedded: Equinox embedded in app servers
  • Servlet bridge
  • Servlets, JSPs, AJAX content
  • OSGi-enabled WAR development and deployment
  • Security contexts and JAAS integration

Tooling

  • Target platforms and cross development
  • Using third-party libraries
  • Dependency management

Provisioning

  • Introduction to p2
  • Adding dynamic provisioning to applications
  • Provisioning servers
  • Extending p2

Audience

This course is for:

  • Software developers looking to leverage Equinox and OSGi
  • Eclipse plug-in wanting a deeper understanding of how Eclipse works
  • System architects interested in leading edge Java modularity
  • OSGi developers wanting to round out their knowledge and learn about Equinox extensions to OSGi and the Eclipse tooling suite

Duration

3 days

Format

Instructor Lead
Three-day instructor-led class with approximately 50% hands-on labs.

Prerequisites

  • Excellent knowledge of Java, JavaEE and object-oriented programming
  • Experience using the Eclipse IDE is desirable