The announcement that Jakarta EE cannot use the javax.* namespace is great news and provides Jakarta EE with a clean slate on which to build and innovate the future of Enterprise Java.
The original proposal
It had been envisioned that the javax.* and jakarta.* namespaces would coexist after Java EE 8 and, as it evolved, the jakarta.* namespace would be used for new features of exiting APIs and the innovation of new APIs. This would have ensured backward compatibility from the start. And overtime the use of jarkata.* would eclipse the old namespace, but never actually replacing javax.* namespace. So, forever more Enterprise Java developers would have to explain why there are two namespaces. A constent reminder of Enterprise Java’s past (something we are trying to move on from).
A new start
Jakarta EE’s hand has been forced and a good thing too. The move by Oracle to disallow the use going forward of the javax.* namespace provides a great opportunity for a fresh start. Enterprise Java can move forward with a clean slate and a new namespace in which to build and innovate in a way that the community has always wanted, unencumbered by the constent reminder of its past in every API.
The migration route has not been settled and at the time of writing, there are two proposals on the table.
- Big band approach – change all namespaces at once
- Migrate overtime – change namespaces as required
Both migration approaches will result in the complete migration to the jakarta.* namespace. More details on how this might happen can be found here Transitioning Jakarta EE to the jakarta namespace.