¿Es posible usar bibliotecas Jave EE más antiguas (con importaciones javax ) en un nuevo sistema Jakarta EE (con importaciones de jakarta )?
Todas las API serían compatibles con versiones anteriores si no fuera por el problema de la marca registrada. ¿Hay alguna biblioteca de tiempo de ejecución o herramienta de compilación disponible que pueda hacer que funcionen juntos? ¿Es la única solución bifurcar bibliotecas antiguas y actualizarlas manualmente?
En particular, estoy mirando la API de servlet, pero la validación, la persistencia y el correo también pueden molestarme.
Puede utilizar el proyecto Eclipse Transformer para transformar su antiguo contenedor compatible con Java EE con importaciones javax.* en un contenedor con importaciones jakarta.* .
El transformador se ocupa de algunas cosas adicionales, como cambiar el nombre de las constantes en los archivos de configuración y demás. Es un trabajo en progreso, pero ya hace el trabajo bastante bien.
Como mencionas, las API son compatibles excepto por los cambios de marca registrada, por lo que una solución es crear contenedores a su alrededor que deleguen de la nueva biblioteca a la anterior. Puede que no siempre sea sencillo, pero dependiendo de su caso de uso, podría funcionar.
public class LegacyServlet implements jakarta.servlet.Servlet { private final javax.servlet.Servlet delegate; public LegacyServlet(javax.servlet.Servlet delegate) { this.delegate = delegate; } @Override public void service(jakarta.servlet.ServletRequest req, jakarta.servlet.ServletResponse resp) { delegate.service(new LegacyServletRequest(req), new LegacyServletResponse(resp)); } }