[ 
https://issues.apache.org/jira/browse/HADOOP-19625?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jose Luis López updated HADOOP-19625:
-------------------------------------
    Description: 
Sub-task of HADOOP-19395, Phase A. It changes no code.

h3. Goal

Before the javax → jakarta switch can start, every third-party dependency bound 
to the javax APIs needs a known jakarta replacement. For each one, record:
* the target artifact and version;
* its minimum Java version (Hadoop builds on Java 17);
* its licence (Category A);
* API changes Hadoop code would have to absorb;
* whether it is released at all: flag the ones that have no jakarta release and 
need a replacement or removal.

The table is the input for the switch sub-tasks of HADOOP-19395, starting with 
B1, which sets the versions in {{hadoop-project}}.

h3. Decision this depends on

Target Jakarta EE 10 (Jetty ee10, Servlet 6.0, Jersey 3.1) or Jakarta EE 11 
(Jetty ee11, Servlet 6.1, Jersey 4.0). Jetty 12.1 supports both. The mapping 
should list both columns where they differ, so the dev list can decide with the 
facts in hand.

h3. Artifacts in scope

The 30 artifacts managed in {{hadoop-project}} that are bound to javax, as 
found by an inventory of the HADOOP-19972 branch. The targets are first 
guesses, to confirm:

||Group||Artifact||Current||Likely target (to confirm)||
|Jersey|{{jersey-server}}, {{jersey-client}}, {{jersey-common}}, 
{{jersey-container-servlet}}, {{jersey-container-servlet-core}}, 
{{jersey-hk2}}, {{jersey-media-jaxb}}, {{jersey-media-json-jettison}}, 
{{jersey-test-framework-core}}, 
{{jersey-test-framework-provider-jdk-http}}|2.46|3.1.x (EE 10) or 4.0.x (EE 
11), same artifact names|
|Jetty|{{jetty-ee8-nested}}, {{jetty-ee8-servlet}}, {{jetty-ee8-webapp}}, 
{{jetty-ee8-websocket-jetty-server}}, 
{{jetty-ee8-websocket-jetty-client}}|12.1.12|the {{jetty-ee10-*}} (or 
{{jetty-ee11-*}}) counterparts, same release|
|Servlet 
API|{{org.eclipse.jetty.toolchain:jetty-servlet-api}}|4.0.9|{{jakarta.servlet:jakarta.servlet-api}}
 6.0 / 6.1|
|JAX-RS API|{{jakarta.ws.rs:jakarta.ws.rs-api}}|2.1.6|3.1 / 4.0|
|JAXB|{{jakarta.xml.bind:jakarta.xml.bind-api}}, 
{{org.glassfish.jaxb:jaxb-runtime}}|2.3.3, 2.3.9|4.0.x|
|Activation|{{jakarta.activation:jakarta.activation-api}}|1.2.1|2.1.x|
|JSP API|{{jakarta.servlet.jsp:jakarta.servlet.jsp-api}}|2.3.6|3.1 / 4.0; check 
whether it is still needed at all|
|Annotations|{{javax.annotation:javax.annotation-api}}|1.3.2|{{jakarta.annotation:jakarta.annotation-api}}
 2.1 / 3.0|
|JSON-P|{{jakarta.json:jakarta.json-api}}, {{org.glassfish:javax.json}}|1.1.6, 
1.1.4|{{jakarta.json-api}} 2.1 with an implementation such as Eclipse Parsson|
|Guice|{{guice}}, {{guice-servlet}}|5.1.0|7.x, through 6.x, which accepts both 
{{javax.inject}} and {{jakarta.inject}}|
|Jackson|{{jackson-jaxrs-json-provider}}, 
{{jackson-module-jaxb-annotations}}|2.18.10|{{jackson-jakarta-rs-json-provider}},
 {{jackson-module-jakarta-xmlbind-annotations}}|
|Others|{{org.codehaus.jettison:jettison}}|1.5.4|to check: still needed with 
Jersey 3/4, or replaceable by Jackson|
|Others|{{io.swagger:swagger-annotations}}|1.5.4|to check: does it depend on 
javax at all, or does it need the swagger v3 jakarta artifacts|

h3. Also check

* Transitive dependencies: run {{mvn dependency:tree}} per module and list any 
javax artifact that arrives through a dependency Hadoop does not manage.
* Shaded clients: which relocations and exclusions in {{hadoop-client-api}}, 
{{hadoop-client-runtime}} and {{hadoop-client-minicluster}} change with each 
replacement.
* LICENSE-binary and NOTICE-binary entries for each new artifact.

h3. Out of scope

* {{javax.cache:cache-api}} (JCache) and jsr305 
({{javax.annotation.Nullable}}): not Jakarta EE, they stay.
* Solr in the YARN application catalog: tracked under HADOOP-19912.
* Making the changes: that is the switch, in the Phase B sub-tasks of 
HADOOP-19395.

h3. Done when

A table covering every artifact above, attached here or in a linked document, 
with a target for each, or a decision to replace or remove it, and the EE 10 / 
EE 11 difference spelled out where it matters.

  was:
This Jira is to track the migration of Javax to Jakarta in Hadoop and identify 
all the transitive dependencies which need to be migrated as well. Currently, I 
see the following major upgrades required:
 # Jersey: 2.46 to 3.x
 # Jetty: 9.x to 12.x


> Map the javax-bound dependencies to their jakarta replacements (Jersey, Jetty 
> ee10, JAXB, Guice, Jackson)
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-19625
>                 URL: https://issues.apache.org/jira/browse/HADOOP-19625
>             Project: Hadoop Common
>          Issue Type: Task
>            Reporter: Palakur Eshwitha Sai
>            Assignee: Jose Luis López
>            Priority: Major
>
> Sub-task of HADOOP-19395, Phase A. It changes no code.
> h3. Goal
> Before the javax → jakarta switch can start, every third-party dependency 
> bound to the javax APIs needs a known jakarta replacement. For each one, 
> record:
> * the target artifact and version;
> * its minimum Java version (Hadoop builds on Java 17);
> * its licence (Category A);
> * API changes Hadoop code would have to absorb;
> * whether it is released at all: flag the ones that have no jakarta release 
> and need a replacement or removal.
> The table is the input for the switch sub-tasks of HADOOP-19395, starting 
> with B1, which sets the versions in {{hadoop-project}}.
> h3. Decision this depends on
> Target Jakarta EE 10 (Jetty ee10, Servlet 6.0, Jersey 3.1) or Jakarta EE 11 
> (Jetty ee11, Servlet 6.1, Jersey 4.0). Jetty 12.1 supports both. The mapping 
> should list both columns where they differ, so the dev list can decide with 
> the facts in hand.
> h3. Artifacts in scope
> The 30 artifacts managed in {{hadoop-project}} that are bound to javax, as 
> found by an inventory of the HADOOP-19972 branch. The targets are first 
> guesses, to confirm:
> ||Group||Artifact||Current||Likely target (to confirm)||
> |Jersey|{{jersey-server}}, {{jersey-client}}, {{jersey-common}}, 
> {{jersey-container-servlet}}, {{jersey-container-servlet-core}}, 
> {{jersey-hk2}}, {{jersey-media-jaxb}}, {{jersey-media-json-jettison}}, 
> {{jersey-test-framework-core}}, 
> {{jersey-test-framework-provider-jdk-http}}|2.46|3.1.x (EE 10) or 4.0.x (EE 
> 11), same artifact names|
> |Jetty|{{jetty-ee8-nested}}, {{jetty-ee8-servlet}}, {{jetty-ee8-webapp}}, 
> {{jetty-ee8-websocket-jetty-server}}, 
> {{jetty-ee8-websocket-jetty-client}}|12.1.12|the {{jetty-ee10-*}} (or 
> {{jetty-ee11-*}}) counterparts, same release|
> |Servlet 
> API|{{org.eclipse.jetty.toolchain:jetty-servlet-api}}|4.0.9|{{jakarta.servlet:jakarta.servlet-api}}
>  6.0 / 6.1|
> |JAX-RS API|{{jakarta.ws.rs:jakarta.ws.rs-api}}|2.1.6|3.1 / 4.0|
> |JAXB|{{jakarta.xml.bind:jakarta.xml.bind-api}}, 
> {{org.glassfish.jaxb:jaxb-runtime}}|2.3.3, 2.3.9|4.0.x|
> |Activation|{{jakarta.activation:jakarta.activation-api}}|1.2.1|2.1.x|
> |JSP API|{{jakarta.servlet.jsp:jakarta.servlet.jsp-api}}|2.3.6|3.1 / 4.0; 
> check whether it is still needed at all|
> |Annotations|{{javax.annotation:javax.annotation-api}}|1.3.2|{{jakarta.annotation:jakarta.annotation-api}}
>  2.1 / 3.0|
> |JSON-P|{{jakarta.json:jakarta.json-api}}, 
> {{org.glassfish:javax.json}}|1.1.6, 1.1.4|{{jakarta.json-api}} 2.1 with an 
> implementation such as Eclipse Parsson|
> |Guice|{{guice}}, {{guice-servlet}}|5.1.0|7.x, through 6.x, which accepts 
> both {{javax.inject}} and {{jakarta.inject}}|
> |Jackson|{{jackson-jaxrs-json-provider}}, 
> {{jackson-module-jaxb-annotations}}|2.18.10|{{jackson-jakarta-rs-json-provider}},
>  {{jackson-module-jakarta-xmlbind-annotations}}|
> |Others|{{org.codehaus.jettison:jettison}}|1.5.4|to check: still needed with 
> Jersey 3/4, or replaceable by Jackson|
> |Others|{{io.swagger:swagger-annotations}}|1.5.4|to check: does it depend on 
> javax at all, or does it need the swagger v3 jakarta artifacts|
> h3. Also check
> * Transitive dependencies: run {{mvn dependency:tree}} per module and list 
> any javax artifact that arrives through a dependency Hadoop does not manage.
> * Shaded clients: which relocations and exclusions in {{hadoop-client-api}}, 
> {{hadoop-client-runtime}} and {{hadoop-client-minicluster}} change with each 
> replacement.
> * LICENSE-binary and NOTICE-binary entries for each new artifact.
> h3. Out of scope
> * {{javax.cache:cache-api}} (JCache) and jsr305 
> ({{javax.annotation.Nullable}}): not Jakarta EE, they stay.
> * Solr in the YARN application catalog: tracked under HADOOP-19912.
> * Making the changes: that is the switch, in the Phase B sub-tasks of 
> HADOOP-19395.
> h3. Done when
> A table covering every artifact above, attached here or in a linked document, 
> with a target for each, or a decision to replace or remove it, and the EE 10 
> / EE 11 difference spelled out where it matters.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to