As you probably are aware, the concept of a single reference implementation (RI) to prove that a specification is implementable does not exist in Jakarta EE. The Jakarta EE Specification Process (JESP) mandates at least one compatible implementation (CI), but preferably as many as possible.
Take a look at Arjan Tijms‘ list of Implementation components used by Jakarta EE servers for a more complete list of compatible implementations and which Jakarta EE compatible product they are included in.
An unintentionally hidden “secret” is how easy it is to get your compatible implementation listed on a specification page. I hope this blog post will clarify the process and make it a little less “hidden“. We are looking into how we can simplify this even further by automating some of the steps, but this is how it looks like right now.
The prerequisite is that you pass the TCK for the specification you implement. The TCK may be downloaded from the specification page and is specific to a version of the specification.
The next step is to publish the TCK results. This is the heart of self-certification. You run the TCK and publish the results yourself. This means that you don’t have to rely on others to run the tests for you. And by publishing the results, you take responsibility for the correctness of the results.
For some examples of how to publish the TCK results, check out the results for Eclipse Yasson 2.0.0 (implements Jakarta JSON Binding 2.0), Weld 4.0.0 (implements Jakarta CDI 3.0), and Eclipse Krazo 2.0.0 (implements Jakarta MVC 2.0).
After publishing the TCK results, the only thing you need to do is to send an email to email@example.com to make the Eclipse Foundation aware that you have passed the TCK.
In order to get listed on a specification’s page under on jakarta.ee/specifications as a compatible implementation, the next thing you need to do is to file a certification request in the specification’s issue tracker.
A certification request needs to follow a specific template to provide the necessary information. I have added the source for the template here:
-  Organization Name ("Organization") and, if applicable, URL: // Add here -  Product Name, Version and download URL (if applicable): // Add here -  Specification Name, Version and download URL: // Add here -  TCK Version, digital SHA-256 fingerprint and download URL: // Add here -  Public URL of TCK Results Summary: // Add here -  Any Additional Specification Certification Requirements: // Add here -  Java runtime used to run the implementation: // Add here -  Summary of the information for the certification environment, operating system, cloud, ...: // Add here -  By checking this box I acknowledge that the Organization I represent accepts the terms of the [EFTL](https://www.eclipse.org/legal/tck.php). -  By checking this box I attest that all TCK requirements have been met, including any compatibility rules.
When a specification team receives a certification request, they will add the
accepted label after verifying the contents of the request. See the certification requests for Eclipse Yasson 2.0.0, Weld 4.0.0, and Eclipse Krazo 2.0.0 for examples of certification requests.
When the certification request has been approved, the last step is to submit a Pull Request to the specifications repository where you add your implementation to the list of compatible implementations for the specification.
The file you should update is the
_index.md file located in the version sub-directory of the specification you are implementing. For example, to add a new compatible implementation called OpenKangaroo 1.0.0 to the Jakarta Wombat specification, I would add the line marked with (+) below:
# Compatible Implementations * [Little Wallaby 2.0](https://wallaby.org/download/2.0) + * [OpenKangaroo 1.0.0](https://open.roo/downloads/roo-1.0.0)
That’s it! We are looking into automating as much as possible of this process to make it as easy as possible while maintaining the necessary control mechanisms. Until we get there, the three steps described in this post are what you need to do.
Please don’t hesitate to reach out to us on one of our mailing lists if you have questions.