There are different ways to deploy a Java application. Traditionally it was a single JAR or a collection of JARs on a machine that has a matching Java Runtime installed. Today there are additional formats like a custom created JVM via jlink or a native compiled Graal Substrate. This gets especially interesting when thinking about deployment of smaller applications for processing tasks via containers in the cloud or on edge devices.
In this talk I want to show the different ways for application deployment, especially with the focus on an OSGi application. With bndtools 6.3.0 there is support for creating the module info into an executable jar, which in turn enables the creation of a custom JVM. With Atomos and the OSGi Connect specification, the application can be started without using the OSGi Framework launcher and OSGi classloading mechanisms.
In short, this talk will compare
different types of OSGi application bundling:
- folder based
- executable jar
different types of OSGi application launching:
- framework launcher (Equinox vs. Felix)
- launching via framework (Equinox vs. Felix)
- launching via bnd launcher
- using Atomos
- Java 11 vs. Java 17
- Hotspot VM vs. Open J9
At the end of the talk you should get an impression about size and performance indications of the different variants.