Training


OSGi 4 Day Training Course

This 4-day course will provide delegates with an excellent grasp of OSGi technology, from the fundamentals through to advanced and enterprise topics.  The course covers all of the topics included in the OSGi Alliance Developer Certification – Professional Exam and would act as an excellent refresher for any developer wishing to sit that exam.

Bndtools, the popular Eclipse IDE plugin, designed to make developing with OSGi easy, is used throughout the course for all of the labs and hands-on activities. The course targets OSGi R6 and the latest technologies and advancements in the OSGi Alliance specifications.

The course will be delivered by either Neil Bartlett or Tim Ward, both of whom are well known and experienced OSGi developers, consultants and trainers.

– Day 1 –

You will be introduced to OSGi and learn how it meets the challenge of building modular, scalable application architectures for the Java Platform. We start with the construction of modules, learning how to define dependencies between them and manage versions of APIs. Next we move onto OSGi Services, the cornerstone of OSGi’s programming model and the key to creating flexible, reusable components. You will use the Declarative Services (DS) specification to build components that react to their environment, configure themselves dynamically and interact with other components. Then we will look at one of the most important patterns used in constructing real applications using services, namely the “Whiteboard Pattern”.

– Day 2 – 

We return to practical topics such as how to build and test modules using industry-standard tools such as Gradle, Maven, JUnit and Jenkins. Also we will cover how to define and manage an application using combinations of modules and configurations, and how to correctly evolve APIs and implementations over time. We conclude with a review of alternative component models including Blueprint.

– Day 3 –

We explore the full module lifecycle, how to safely update modules at runtime, and how the lifecycle affects services. We will discuss another common and useful OSGi pattern known as the “Extender Pattern”, examine examples of existing extenders, and build our own extender. Next we will look at the Compendium of useful services offered by the OSGi specification, and also some useful third-party modules and tools.

– Day 4 – 

Today we focus on enterprise topics. We cover distributed programming with Remote Services (Distributed OSGi), including how to manage discovery and topology in a network containing a large number of nodes. We will look at the new Asynchronous Services capability of OSGi and its use in distributed programming. Next we will build a RESTful web service based on standard JAX-RS technology with an OSGi twist, and look at all the options for deploying web applications in OSGi, including embedding an OSGi framework inside a Java EE application server (e.g. Tomcat). We explore OSGi interoperability with Java EE specifications including JNDI, JTA, JPA, JDBC and JMX. Finally we discuss OSGi enRoute, the application framework offered by the OSGi Alliance for rapidly bootstrapping projects.

Course Info

Who is this course for?

If you are a Java developer interested in gaining a thorough understanding of OSGi and how to use it to build highly modular, extensible applications, then this course is for you. Its also a useful refresher if you plan on taking the OSGi Alliance Developer Certification – Professional Exam.

Course Duration & Timings

The course is a 4 day course and runs from 9.00hrs to 16.00hrs each day.

Course Format

Approximately 40% Hands-on Labs and Exercises, 60% Presentation.

Delegate Pre-Requisites

You should be a competent Java developer or hands-on architect and will need to have a good understanding of core Java. Some experience with using a build tool such as Maven or Gradle and an IDE such as Eclipse will be useful but not essential. Each delegate should bring their own laptop with at least Java 1.7 (ideally Java 1.8) and Eclipse 4.6 “Neon” and the Bndtools 3.3 plugin installed.

Users must have admin rights to install plugins and software as required for the hands-on elements of the course. The laptop must either be provided with USB access or able to download the lab exercises from Amazon S3 or GitHub. If delegates do not have access to their own laptop a machine can be provided at additional cost, with at least 2 weeks advance notice to Paremus.

Private Courses

If you would rather arrange a private training course at your office or a more suitable location then please contact our training team. Private training course syllabuses can be tailored to your specific requirements and delivered globally.

Course Syllabus

Introduction

  • What is modularity? State of the art in plain Java. “JAR Hell”.
  • OSGi bundles. Package-level dependencies, bundle-level dependencies, versioning basics. Tooling approaches. Using bnd and Bndtools.
  • Open source OSGi implementations: Concierge, Equinox, Felix and Knopflerfish.

Services

  • Introduction to Services.
  • Declarative Services. Component lifecycle. References to services. Laziness. Configuring components.
  • Whiteboard Pattern.

OSGi in Practice

  • Developing bundles with Bndtools.
  • Build systems: Gradle/Maven.
  • Alternative tools: Eclipse PDE, Maven Bundle Plugin, Maven Tycho.
  • Unit testing, integration testing.
  • Configuring runtimes. Repositories, OBR.
  • Evolving APIs. Semantic versioning.
  • Other component models including Blueprint. 

Lifecycle

  • Bundle lifecycle. 
  • Bundle events.
  • Concurrency and thread safety.
  • Extender bundles. 

OSGi Compendium

  • Event Admin for asynchronous event delivery.
  • Configuration Admin for configuring components and managing configuration data.
  • Metatype Service for defining tool-accessible metadata about services.
  • HTTP Service for building lightweight web servers.
  • Coordinator Service for coordinating tasks across decoupled components.
  • Log Service. 
  • Promises.

Enterprise

  • Remote Services. Distribution, discovery and topology. Available implementations.
  • Async Services (requires Java 8 for Labs). 
  • REST and OSGi. Jersey, JAX-RS.
  • Web application development: HTTP Whiteboard, Web App Bundles (WABs).
  • OSGi enRoute: Application Framework.
  • Embedding OSGi. Writing a launcher. Integration between OSGi and the outer application. Java EE interop.
  • Transactions with JTA.
  • Persisting domain models with JPA.
  • JDBC drivers in OSGi.
  • Managing OSGi runtimes with JMX.

Optional Topics

These will only be covered if time permits:

  • OSGi subsystems.
  • OSGi future directions.
  • JDK 9 module system (Jigsaw) and how it will affect OSGi. 
  • Other JVM languages in OSGi: Scala, Groovy, Clojure, Xtend.

London

June 12 - 15 , 2017

Early Bird
(until April 14, 2017)

£1,245

 

Standard
(from April 15, 2017)

£1,495

New York

September 25 - 28, 2017

Early Bird
(until July 31, 2017)

$ 1,945

 

Standard
(from August 1, 2017)

$ 2,345

How To Book

To secure your place on a course please either register online using the above Book Now buttons for the course you are interested in or send us an email indicating which course dates and the number of delegates along with your name, email address, contact telephone number and company name (if applicable).

Online registrations can be paid for by credit card and PayPal or you can request an invoice.

Terms and Conditions

The Public Training Course terms and conditions can be reviewed here.

 

Training Course Copyright

Please note that the contents of the training course are copyright Paremus and Neil Bartlett. The training course handouts may not be reproduced by any means without express permission from Paremus. All rights reserved.

 

Questions?

Please contact us at [email protected] with any questions you have about any of our training courses, schedules, locations or anything else. We look forward to hearing from you.

About the Trainers

Neil Bartlett, a Principal Engineer, Consultant and Trainer with Paremus, is an experienced software developer, consultant and trainer specialising in Java, OSGi, Eclipse and Haskell. Neil has been working with OSGi technology since 2003.

Neil is a prolific tweeter on all things #OSGi and very willing to answers peoples questions and queries (@nbartlett). Neil’s willingness to help people get to grips with OSGi has also meant he can often be found responding to many of the OSGi Stack Overflow related questions and is currently the only holder of a gold OSGi badge there.

Neil’s OSGi expertise is well recognized across the world and he has provided consulting and training for numerous organizations and individuals in many different countries. Neil is also a co-author and trainer of the OSGi Masterclass advanced OSGi training that he ran in partnership with Peter Kriens, the former OSGi Alliance Director of Technology.

His current passion is to make sure that development with OSGi is easier than developing with Java. To this end Neil is the creator ofBndtools which offers a plugin to Eclipse, leveraging Bnd, that makes it easy and productive to develop with OSGi.

As a budding author, Neil is working on his second book Effective OSGi which will show developers how to quickly accelerate their productivity with OSGi using the latest techniques and tools.  Previously Neil published OSGi in Practice, a free Creative Commons-licensed book on OSGi.

With Paremus, in addition to his duties working on development for the Service Fabric and helping support customers, Neil is actively engaged in the OSGi Alliance Enterprise Expert Group, which is tasked with defining the specifications for Enterprise OSGi. Neil also contributes to the Paremus Blogs.

Tim Ward, Paremus CTO, has been working with OSGi since 2008 and is an experienced Engineer, Consultant and Trainer. Tim is recognised globally for his OSGi expertise, regularly speaking and giving tutorials at conferences around the world on topics such as OSGi, the Java Persistence API, Apache Aries, and WebSphere Application Server. Tim is also co-author of Enterprise OSGi in Action from Manning Publications.

As chair of the OSGi IoT Expert Group and a regular participant in the OSGi Core Platform (CPEG) and Enterprise (EEG) Expert Groups Tim has led specification development for a number technologies, including OSGi Promises and Asynchronous Services, co-authoring the JPA service specification, and he drove the design for bytecode weaving and classpath scanning support from the core framework in the CPEG.

Tim is also active within a number of Open Source projects being a committer and a PMC member in theApache Aries  project and a committer for the Bndtools project. Tim also got involved with the Hibernate team’s adoption of OSGi.

Formerly with IBM, where Tim was a design and development lead for IBM’s OSGi Application Feature Pack for WebSphere Application Server, now known in WebSphere as the OSGi Application programming model, a core part of both the standard and “Liberty” profiles.

Tim also contributes to the Paremus Blogs.