Setting up an OSGi project and running the application with bnd and Bndtools is quite easy as it provides the basics to get a developer started. Unfortunately, the default templates only get you settled with the basics. Companies have certain requirements on their code and often require builds to match the requirements of their company processes. Thus, something extra is required to help new developers get ready to roll and this tutorial will explain how this can be achieved. Attendees will understand how they can setup new projects and workspaces accordingly.
Every so often we need to introduce a new developer into our team who might not have experience with OSGi nor any other modular system. Have you ever thought how we can make adoption of new comers into your ecosystem easier?
Most of OSGi projects require some kind of tooling during both - build and development time. While we might live without second reliability of first one is a key of stable builds. As new hire you probably went over some introduction showing how to use properly tooling and surrounding infrastructure in order to become productive. Lets see together how much we can simplify.
Java 9 introduced the Java Platform Module System (JPMS) as a way to modularize the Java platform and it can be also be used by developers to modularize their own applications, although JPMS lack a number of important features for software running on the Java platform.
As people look to support the latest versions of the Java platform, changes introduced in Java 9 related to JPMS led to the needs for some features in the OSGi Core specification. OSGi framework implementations like Eclipse Equinox and Apache Felix and tools like Bnd were updated to support these new features.
QIVICON is an Eclipse SmartHome based solution from Deutsche Telekom AG. It utilises OSGi to provide a modular Java runtime.
Since the beginning, QIVICON leveraged Eclipse PDE with Maven & Eclipse Tycho as its build technology but over the time, the complexity increased. It became hard to get an overview and manage the runtime and build dependencies. Especially maintaining target configurations for IDE and CI/CD build, having different embedded gateways for installation increased complexity significantly.