Jakarta EE: A Clean Slate

DZone 's Guide to

Jakarta EE: A Clean Slate

It's time for a clean slate.

· Java Zone ·
Free Resource

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.

Migrating Forward

The migration route has not been settled and at the time of writing, there are two proposals on the table.

  1. Big band approach — change all namespaces at once
  2. 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.

jakarta, jakarta ee, java, javax, namespace, opinion, oracle

Published at DZone with permission of Alex Theedom , DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}