Por qué cambió el espacio de nombres y qué implica
El cambio de javax a jakarta no fue una mejora técnica: fue una consecuencia legal, y por eso es tan radical.
Cuando la gestión de Java EE pasó a la Eclipse Foundation, la marca Java se quedó donde estaba. La primera entrega, Jakarta EE 8, era idéntica a Java EE 8 y mantenía javax.*. Jakarta EE 9 hizo el corte: renombró todos los paquetes a jakarta.* sin añadir una sola funcionalidad nueva. Es una versión que existe solo para que el ecosistema pueda cruzar el puente.
Eso tiene una consecuencia práctica incómoda: no hay compatibilidad hacia atrás y no hay término medio. Una aplicación no puede estar medio migrada, porque el contenedor carga un espacio de nombres o el otro. Las dos variantes de la misma librería en el classpath no se complementan, se estorban.
En el código propio el cambio es mecánico y lo resuelve una herramienta. Lo que marca el calendario son las dependencias de terceros que aún no publican una variante jakarta, y los descriptores XML, que también cambian de espacio de nombres y suelen olvidarse hasta que el despliegue falla. Casi siempre viene acompañado de una subida de versión de Java, porque los servidores que soportan Jakarta EE ya no certifican Java 8.
Qué versión de Jakarta EE corresponde a cada servidor
La versión de destino no se elige por preferencia: la fija el servidor que se pueda desplegar en producción.
Cada fabricante publica su propia matriz de certificación y la revisa en cada versión menor. Esta tabla sirve para acotar el terreno; la decisión final se toma contra la matriz oficial del servidor concreto que esté en producción.
Los descriptores XML que también hay que cambiar
Es la parte que más se olvida, porque el código compila sin ella y el fallo solo aparece al desplegar.
Además del número de versión cambia el propio espacio de nombres del XML, que pasa a apuntar a jakarta.ee/xml/ns/jakartaee. Un descriptor con la versión nueva y el espacio de nombres viejo falla en el arranque, no en la compilación.