Letter to the OSGi User Community:
With the JCP Executive Committee’s acceptance
of JSR 376, the Java Platform Module System (JPMS) will be included in the
Java SE 9 release. The OSGi Alliance has recently completed an analysis of JPMS
and what it means for our user community.
We recognize that many of you have invested in
OSGi technology over a number of years and have business-critical systems that
rely on OSGi, so you may question if and how Java SE 9 may impact you. Please be
assured that OSGi will continue to operate with its full capabilities on top of
the new Java SE 9 platform.
However, the modularity capabilities in OSGi
and JPMS are not the same. Our modularity experience, earned through the
evolution of OSGi, has proven there are specific requirements in modularizing
an application that is assembled with code from multiple sources, which have
independent release cycles. Given these requirements, JPMS is not suitable for
most real-world applications and we therefore caution against the use of JPMS
for the application layer.
As you know, the modularization of an
application, where code and dependencies are pulled from many
independently created sources, presents a different set of challenges than
those faced in the modularization of a defined and closely managed platform.
This difference is especially true when the entire code base is managed by a
single entity and released all at once, like the Java platform.
For more than 15 years, OSGi has proven
successful in modularizing user applications by using dynamic resolution and
semantic versioning, as well as supporting isolation, multiple class
loaders and dependency injection. With its goal of modularizing the platform,
JPMS has been able to rely upon static dependency resolution and ignore versioning, deferring
responsibility for versioning to others.
Clearly, both OSGi and JPMS will co-exist and
effectively operate in this application/platform demarcated environment. The
modularization of the Java platform with Java SE 9 is a significant step forward
for Java as a whole, and OSGi technology’s role in application-level
modularization is as important today as it has been for previous releases of
Java.
If you have any technical questions, please
post them to osgi-dev@mail.osgi.org or, if you prefer an off-list inquiry,
email modularity@osgi.org.
Sincerely,
Dan Bandera
President
OSGi Alliance