Jakarta EE (formerly Java EE) is a specification for Java applications and mostly used for web applications. Application servers like Apache Tomcat can be used to run applications implementing the respective APIs, e.g., the Servlet API.
Java EE was maintained by Oracle. In 2017, Oracle announced that future development will be performed by the Eclipse Foundation. The first version with the new name Jakarta EE was released in 2019, maintaining full compatibility.
Because of trademark issues for the name “Java”, the existing package names used in the APIs could no longer be used. So with the release of Jakarta EE 9 in 2020, the namespace changed from “javax” to “jakarta”. For example, a class implementing a Servlet would contain an import for javax.servlet.http.HttpServlet:
With Jakarta EE 9 and later, this class is no longer available, so existing code must be modified:
Most application servers like Apache Tomcat can handle only one of the APIs. For example, Tomcat versions up to 9.x support Java EE while any version starting from 10.x only supports Jakarta EE.
If you host your own FirstSpirit instance or develop modules for FirstSpirit it is very likely that you are affected.
Your FirstSpirit installation is affected if at least one of the following conditions applies:
Your module is affected if at least one of the following conditions applies:
The current versions of FirstSpirit implement the Java EE API. As an application server, Apache Tomcat in version 9 is recommended. Modules containing web-app components must not use the Jakarta EE API at this point.
When the first version of FirstSpirit with support for Jakarta EE is released, it will contain an automatic migration tool that translates Java EE API to Jakarta EE API. Our internal tests show that most existing modules will work as before. However, there are some drawbacks:
If you have the chance to test your setup on a local FirstSpirit server, we highly recommend performing those tests as early as possible.
Please note: With the first release of the FirstSpirit Jakarta Edition (2023.9) we will start a transition period of 12 months during which unchanged modules will still be supported. This period must be used to migrate the module to the Jakarta EE API.
We recommend testing your existing modules locally with a version of FirstSpirit supporting Jakarta EE. For this, we provide current snapshot versions of the fs-isolated-server.jar to be used in local installations as well as a Docker image shortly.
The FirstSpirit Jakarta EE Edition will support Jakarta Servlet 6.0. Please note that some deprecated parts of the Servlet API have been removed. This may cause the automatic migration to fail for some web applications.
During our internal tests we identified some Java libraries for which the automatic migration fails. Please let us know in the comments if you find any more problematic libraries.
These libraries use API that has been removed with Jakarta Servlet 6.0, so migrating the packages from javax to jakarta will not work.
Since each module is unique, we can only provide rough guidelines for migrating your existing code:
Build and test your module thoroughly.
Please see the Jakarta Migration Guide for FirstSpirit Modules for a detailed explanation of the steps mentioned above.
Jakarta EE is supported by Spring Boot 3.0.0 and later. If your component uses Spring Boot 2.x and is deployed as a standalone web application, the automatic migration might fail in some cases, so you need to test your application thoroughly.
However, if your component is deployed as part of the ContentCreator, you must update Spring Boot to 3.0.0 or later since versions can not be mixed in a single web application.
In contrast to the phased rollout for cloud customers (see below), on-premises customers are able to test and migrate their FirstSpirit servers once version 2023.9 has been released. However, we strongly recommend to wait with the update of productive servers at least until release 2023.11 since we aim to guarantee the compatibility for modules provided by Crownpeak with that release.
If you run FirstSpirit in an on-premises-scenario, you need to upgrade your Tomcat version when switching to the Jakarta EE edition of FirstSpirit. Since the Servlet version will be updated to 6.0, you need a 10.1.x version of Tomcat.
To provide enough time for customers who use our SaaS offering to test the compatibility with custom modules, the Jakarta EE Edition of FirstSpirit will be rolled out in three phases. This ensures that developers can test their modules thoroughly while the prod instance remains unchanged as long as possible.