= Migration to jakarta namespace

== Introduction

As described in the Apache TomEE Dev https://lists.apache.org/thread/qfxykymqbm916fhrpvhm8934vwo6pvt1[mailing list], the work for the migration to the Jakarta namespace is tracked by https://issues.apache.org/jira/browse/TOMEE-3862[TOMEE-3862].
The following is a list of common dependency upgrades, configuration, tips and tricks that can help you to jump or speed up your contribution to this migration by fixing test, examples, etc. within the project.

If you are new to the project, don't forget to check our https://tomee.apache.org/community/index.html[Community] page containing all the details on how to start contributing.


== General Notes

- Use a JDK >= 11 + Maven 3.8.x

- Master branch is being used for this migration.

- Javamail is currently broken. We need to have a jakarta compatible
version of Geronimo Javamail. This currently breaks 2 examples and
prevents platform tck from running.

- Deltaspike / Kratzo examples require dependency upgrades, i.e. MVC
2.0 + Jakarta version of Deltaspike.

- Micro Profile examples are broken due to the ongoing integration work
of SmallRye impls. If the integration is done, we can fix them.

- If Hibernate is used, we either need to upgrade to 6.0.0 _or_ use the
Jakarta artifact from the 5.6.x series. In some examples, we still use
Hibernate 4, so the upgrade also requires to deal with
"tomee.jpa.factory.lazy".

- Check for "http" repositories to avoid the default http blocker in
newer Maven versions.

== Artifacts

|====
|From | To | Comment

a|
[source, xml]
----
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>x.x.x</version>
  <configuration>
    <source>8</source>
    <target>8</target>
  </configuration>
</plugin>
----
a|
[source, xml]
----
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.10.1</version>
  <configuration>
    <source>11</source>
    <target>11</target>
  </configuration>
</plugin>
----
b|
Project master branch now targets Java 11.


a|
[source, xml]
----
<dependency>
  <groupId>org.jboss.arquillian</groupId>
  <artifactId>arquillian-bom</artifactId>
  <version>x.x.x-.</version>
  <scope>import</scope>
  <type>pom</type>
</dependency>
----
a|
[source, xml]
----
<dependency>
  <groupId>org.jboss.arquillian</groupId>
  <artifactId>arquillian-bom</artifactId>
  <version>1.7.0.Alpha10</version>
  <scope>import</scope>
  <type>pom</type>
</dependency>
----
b|
-


a|
[source, xml]
----
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
----
a|
[source, xml]
----
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>2.0.0</version>
----
b|
-


a|
[source, xml]
----
groupId>org.apache.myfaces.core</groupId>
<artifactId>myfaces-api</artifactId>
<version>2.1.8</version>
----
a|
[source, xml]
----
groupId>org.apache.myfaces.core</groupId>
<artifactId>myfaces-api</artifactId>
<version>3.0.1</version>
----
b|
-



a|
[source, xml]
----
<dependency>
  <groupId>javax.websocket</groupId>
  <artifactId>javax.websocket-api</artifactId>
  <version>1.x</version>
</dependency>
----
a|
[source, xml]
----
<dependency>
  <groupId>jakarta.websocket</groupId>
  <artifactId>jakarta.websocket-api</artifactId>
  <version>2.0.0</version>
</dependency>
----
b|
-


a|
[source, xml]
----
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-api</artifactId>
    <version>9.0.x</version>
    <scope>provided</scope>
</dependency>
----
a|
[source, xml]
----
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-api</artifactId>
    <version>10.0.20</version>
    <scope>provided</scope>
</dependency>
----
b|
or latest Tomcat 10.0.x (depending on the Tomcat version used in the root pom.xml)


a|
[source, xml]
----
<dependency>
  <groupId>org.eclipse.microprofile</groupId>
  <artifactId>microprofile</artifactId>
  <version>2.0.1</version>
  <type>pom</type>
  <scope>provided</scope>
</dependency>
----
a|
[source, xml]
----
<dependency>
  <groupId>org.eclipse.microprofile</groupId>
  <artifactId>microprofile</artifactId>
  <version>5.0</version>
  <type>pom</type>
  <scope>provided</scope>
</dependency>
----
b|
-


a|
[source, xml]
----
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
----
a|
[source, xml]
----
<groupId>org.apache.tomee</groupId>
<artifactId>taglibs-shade</artifactId>
<version>9.0.0-M8-SNAPSHOT</version>
----
b|
Shaded artifacts are described in the next section.


|====


=== Shaded artifacts
Artifacts whose projects have not yet released a Jakarta namespace compatible version are being modified(shaded) in the module https://github.com/apache/tomee/tree/master/deps[tomee/deps], feel free to open a pull request if you find a version that needs to be shaded.


== Packages

|====
|From | To | Comment


a|
[source, java]
----
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
----

a|
-
b|
This packages come from JRE and don't need migration.
|====
