Java EE, Jakarta EE and the Dead "javax" 📎
"...[from https://eclipse-foundation.blog/2019/05/03/jakarta-ee-java-trademarks/]...."
- The javax package namespace may be used within Jakarta EE specifications but may be used “as is” only. No modification to the javax package namespace is permitted within Jakarta EE component specifications. Jakarta EE specifications that continue to use the javax package namespace must remain TCK compatible with the corresponding Java EE specifications.
- Jakarta EE component specifications using the javax package namespace may be omitted entirely from future Jakarta EE Platform specifications.
- Specification names must be changed from a “Java EE” naming convention to a “Jakarta EE” naming convention. This includes acronyms such as EJB, JPA or JAX-RS.
Trademarks / licensing issues are quite complex, if you are interested in some background, listen to airhacks.fm episode: #13 From Java EE over EE4j to Jakarta EE with Mike Milinkovich
The javax
namespace issue was known for years (see e.g. Reza's Joint Community Open Letter on Java EE Naming and Packaging),
now we have a clear resolution. All the Java EE specifications / projects are going to be renamed with the "Jakarta" prefix (see Renaming Java EE Specifications for Jakarta EE) anyway.
Consistency, clarity and simplicity are crucial for the success of Jakarta EE. A clear cut e.g. renaming all packages from javax
to e.g. jakarta
would introduce a consistent look and feel and branding. A single package strategy is better, than a mix of javax
and jakarta
namespaces.
Forcing projects to migrate (=search "javax" and replace with "jakarta") or introducing breaking changes every 20 years (J2EE 1.2 was introduced in December 12, 1999) is acceptable. Such a migration could even introduce an opportunity to remove superfluous patterns, layers, indirections and libraries.