Java Support Strategy

Last modified by Michael Hamann on 2024/06/03 10:15

There are lots of Java versions out there and supporting all of them is just too hard to be done in a quality manner. Thus, we only support a subset.

By "supported versions" we mean:

  • XWiki runs fine on that Java version.
  • Issues created for these versions of Java in JIRA are not closed as won't fix and we make a best effort to fix them.
  • We include these versions in our tests (be them automated or manual).

Supported Java Versions

Terminology:

  • "source level": This is the Java syntax used in the source of XWiki. From a user point of view, this can be considered as the minimal Java version that can be used to run XWiki.

Rules:

  • As a general rule we follow the Java LTS release cadence (currently every 2 years), which means that at the beginning of every 2 XWiki cycles, we drop the oldest Java version that we were supporting and start supporting the latest Java LTS (and at the source level we upgrade it by one version too). Examples:
    • In XWiki 16.0 (2024), we drop the support of Java 11, continue to support Java 17 (which becomes the new source level), and work as fast as possible to support Java 21 in 16.x. We continue to support Java 11 & 17 for XWiki 15.10.x (XWiki LTS).
    • In XWiki 17.0 (2025), we continue to support Java 17 & 21. We also continue to support Java 17 & 21 for XWiki 16.10.x (XWiki LTS).
    • Java 25 is out in September 2025
    • In XWiki 18.0 (2026), we drop support for Java 17, continue to support Java 21 (which becomes the new source level), and add support for Java 25 as soon as possible for 18.x. We continue to support Java 17 & 21 for XWiki 17.10.x (XWiki LTS).
  • As a best effort, we also try to support more recent Java versions whenever we can.
    • For example, in XWiki 14.10.x we added support for Java 17

Since Java 17+, you need to have the following Java switches to run XWiki:

--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED

List of issues related to Java 17 & 21:

By XWiki Versions

XWiki VersionsJava Version supportedSource Level
XWiki < 6.0Java 6Java 6
XWiki < 8.1Java 7Java 7
XWiki < 11.3Java 8Java 8
XWiki >= 11.3Java 8 & Java 11Java 8
XWiki >= 14.0 & < 15.3Java 11Java 11
XWiki >= 14.10.9/15.3Java 11 & Java 17Java 11
XWiki >= 16.0.0Java 17 & Java 21Java 17

Things to do when increasing the minimum supported Java version in the current branch

Get Connected