Skip to content

Package Naming, APIs, TCKs

Scott M Stark edited this page Feb 2, 2022 · 10 revisions

The java, javax and jakarta names are trademarked names that have restrictions on their usage. For Jakarta EE, the specification projects produce APIs that utilize the jakarta.* namespace. The APIs produced by a specification project are the only artifacts that should make use of the jakarta.* package namespace. Implementations and TCKs must utilize a non-jakarta namespace.

TCK Conventions

Starting with EE10, TCK packages must not make use of the java.*, javax.*, or jakarta.* namespaces. For EE10 that is the only requirement. A proposed standard package name of ee.jakarta.tck.[spec] can be used safely by Jakarta EE TCK projects. Future versions of EE may impose additional requirements for TCK package naming.


NOTE

The reason that the specification committee decided to call out the packages used by TCKs as special relative to APIs is due to the fact that only specification projects are allowed to create content in the jakarta namespace. They felt that even though specification projects could technically do this, it would be inappropriate as TCKs should be mimicking user application behavior. Historically Java EE and Jakarta EE TCKs have used a separate namespace from the specification APIs. There was a concern that if TCKs started deploying applications under the jakarta namespace, they would be subject to a blanket challenge that simply stated this was in violation of trademark guidelines for user applications, and as such, containers would be justified to refuse to deploy them.


JakartaEE Maven Versioning Rules

For more details on expected naming conventions used in Maven artifacts, see: https://wiki.eclipse.org/JakartaEE_Maven_Versioning_Rules