commons-email 2.0.0 which will be compatible with the jakarta namespace will be available soon (I'm writing this answer on 2024-01-15) as you can see in this Jira ticket : https://issues.apache.org/jira/browse/EMAIL-203
Please note, Jun 27 2024 this library appeared in the maven repo
// https://mvnrepository.com/artifact/org.apache.commons/commons-email2-jakarta
implementation("org.apache.commons:commons-email2-jakarta:2.0.0-M1")
Videos
Only javax usage inside Jakarta EE is affected by modification restrictions. Several javax package exist outside Jakarta EE and are therefore in no way affected. Apache Commons IO uses javax.imageio, which is one of them.
Over the decades, many of the parts of Java were given javax.* package names by Sun Microsystems, then later Oracle Corp (having acquired Sun).
Some of those parts, but not all, were the group of technologies called Java EE (Enterprise Edition). In recent years, those Java EE parts were donated by Oracle to the Eclipse Foundation where they were renamed Jakarta EE. As part of the transition, the package names changed from javax.* to jakarta.*.
Many parts of Java using javax.* package names were not part of Java EE, and were not donated. These continue to be bundled in JDK/JRE products using the same javax.* packages. These have not changed names, so you need not do anything, no changes needed in your codebase.
Third-party libraries such as those found in the Apache projects have code that refers to the javax.* parts of Java. If those referenced interfaces and classes remain in Java, not donated, then their package names remain intact. If those referenced interfaces and classes were donated, then (a) you must obtain a new version of that library that has been updated to Jakarta EE, and (b) you’ll need to change the relevant package names in your codebase.
If you use the technologies in any but the first release of Jakarta EE, then you must use the jakarta.* package naming for Jakarta EE related interfaces and classes. Jakarta EE versions 9, 10, and 11 use the new package naming, while Jakarta EE 8 used the old package naming.
The deployment of
org.apache.commons:commons-io:1.3.2
Was a mistake that was ultimately fixed by relocating:
POM of org.apache.commons:commons-io:1.3.2
To use commons-io:commons-io:1.3.2.
The mistake was likely an attempt to migrate the Commons IO library to use the current naming convention for Maven groupIds.
From commons-io website. the latest release is 2.0.1. 1.3.2 is pretty old. Given this information, the repository in http://repo2.maven.org/maven2/commons-io/ holds the latest releases and is the right one to use.
This related mail thread makes interesting reading.
Commons HttpClient is an old project that produced HttpClient 3.1. The project was subsumed by the larger Apache HttpComponents project, which produced HttpClient 4.x.
It's rather confusing and a bit political, but the old Commons HttpClient library is now deprecated.
Any ... difference between those two libraries.
Yes. They are very different. The package names are different for a start, and the 4.x APIs are much richer than the 3.x APIs.
For a start the 4.x HttpClient APIs are based on core libraries that are designed to support both the client and server sides of HTTP. The core is designed to support both blocking I/O and event driven I/O, and there is an AsyncHttpClient API top support the latter. The framework also has a lot in the way of cookie management, connection management, client-side authentication, proxy routing, resource handling and streaming, etc.
Sadly, this all means that code that was built to use HttpClient 3.x would need a major rewrite to use HttpClient 4.x. I guess this is the source of the confusion and politics that @skaffman alludes to.
But for me, the bottom line is that if you are developing new project, you should be using HttpClient 4.x.