Jetty 9.4, 10 and 11 are EOL, so it would be useful for jUPnP to support a currently maintained Jetty version.
There is a range of Jetty options nowadays. Jetty 12 supports multiple EE environments and can therefore be used with both the legacy javax.servlet namespace and the newer jakarta.servlet namespace.
| Jetty version |
Servlet namespace(s) |
Java version |
Pax Web version |
Karaf version |
| 12.1.x |
javax.servlet or jakarta.servlet |
17+ |
10.1.x (javax), 11.1.x (jakarta) |
4.5.x WIP |
| 12.0.x |
javax.servlet or jakarta.servlet |
17+ |
10.0.x (javax), 11.0.x (jakarta) |
- |
| 11.0.x |
jakarta.servlet |
11+ |
- |
- |
| 10.0.x |
javax.servlet |
11+ |
9.0.x |
- |
| 9.4.x |
javax.servlet |
8+ |
8.0.x |
4.4.x |
The current jUPnP implementation still targets Java 11 and uses Jetty 9.4 with Servlet API 3.1.
The OSGi ecosystem has progressed since this issue was opened:
- Pax Web 10 has been released and provides Jetty 12 support while retaining the
javax.servlet namespace.
- Pax Web 11 provides the corresponding Jetty 12 implementation using the
jakarta.servlet namespace.
- The Pax Web Jakarta EE 10 work item has been completed.
- The latest released Apache Karaf 4.4.x line still uses Pax Web 8, Jetty 9.4 and
javax.servlet. Karaf 4.4.11 uses Pax Web 8.0.35 and Jetty 9.4.58.
- Karaf 4.5 is currently under development as
4.5.0-SNAPSHOT. It is moving directly to Pax Web 11.1.x, Jetty 12.1 and Jakarta Servlet API 6.1.
The current Karaf migration path therefore looks approximately like this:
Karaf 4.4.x
Java 11+
Pax Web 8
Jetty 9.4
javax.servlet
Karaf 4.5.x (work in progress)
Java 17+ or possibly Java 21+
Pax Web 11.1.x
Jetty 12.1
jakarta.servlet
The final minimum Java version for Karaf 4.5 does not appear to be settled yet. Jetty 12.1 requires at least Java 17, while there is also ongoing work proposing Java 21 as the Karaf 4.5 baseline.
Karaf is therefore effectively skipping Pax Web 10 and moving directly from Pax Web 8 with javax.servlet to Pax Web 11 with jakarta.servlet.
This means that simply upgrading the existing Jetty dependencies would not provide compatibility with both Karaf generations. Supporting current and future Karaf versions would also require supporting both Servlet namespaces.
It might therefore be useful to split the Jetty transport into separate modules, for example:
- a Java 11 / Jetty 9.4 /
javax.servlet transport compatible with Karaf 4.4;
- a Java 17+ / Jetty 12 /
jakarta.servlet transport compatible with the future Karaf 4.5 stack;
- optionally, a Java 17+ / Jetty 12 /
javax.servlet transport for Pax Web 10 and non-Karaf users.
Each module could then properly define its version-specific dependencies. This would also prevent issues such as #157 and #288 while continuing to avoid implementation dependencies in the Core module.
Jetty 9.4, 10 and 11 are EOL, so it would be useful for jUPnP to support a currently maintained Jetty version.
There is a range of Jetty options nowadays. Jetty 12 supports multiple EE environments and can therefore be used with both the legacy
javax.servletnamespace and the newerjakarta.servletnamespace.javax.servletorjakarta.servletjavax), 11.1.x (jakarta)javax.servletorjakarta.servletjavax), 11.0.x (jakarta)jakarta.servletjavax.servletjavax.servletThe current jUPnP implementation still targets Java 11 and uses Jetty 9.4 with Servlet API 3.1.
The OSGi ecosystem has progressed since this issue was opened:
javax.servletnamespace.jakarta.servletnamespace.javax.servlet. Karaf 4.4.11 uses Pax Web 8.0.35 and Jetty 9.4.58.4.5.0-SNAPSHOT. It is moving directly to Pax Web 11.1.x, Jetty 12.1 and Jakarta Servlet API 6.1.The current Karaf migration path therefore looks approximately like this:
The final minimum Java version for Karaf 4.5 does not appear to be settled yet. Jetty 12.1 requires at least Java 17, while there is also ongoing work proposing Java 21 as the Karaf 4.5 baseline.
Karaf is therefore effectively skipping Pax Web 10 and moving directly from Pax Web 8 with
javax.servletto Pax Web 11 withjakarta.servlet.This means that simply upgrading the existing Jetty dependencies would not provide compatibility with both Karaf generations. Supporting current and future Karaf versions would also require supporting both Servlet namespaces.
It might therefore be useful to split the Jetty transport into separate modules, for example:
javax.servlettransport compatible with Karaf 4.4;jakarta.servlettransport compatible with the future Karaf 4.5 stack;javax.servlettransport for Pax Web 10 and non-Karaf users.Each module could then properly define its version-specific dependencies. This would also prevent issues such as #157 and #288 while continuing to avoid implementation dependencies in the Core module.