You have probably heard the term Compatible being used in the context of Jakarta EE What does it actually mean? And what is the difference between a Jakarta EE Compatible Product and a Jakarta EE Compatible Implementation? Before we dive into explaining those terms, let’s first look at the parts a specification is made up of.
The Specification Document describes the specification in textual form. Some specifications may not have a physical document but have everything described in the JavaDoc of the API component.
The API, or Application Programming Interface, is not considered a normative artifact. That means that an implementation can reproduce the API as long as the signature of the API is identical
The Technology Compatibility Kit (TCK) defines how to test that an implementation fulfills all the requirements in order to implement the specification.
At least one Open Source(*) implementation that passes the TCK is required in order for a specification to be made final.
(*) The approved Open Source licenses for ratifying compatible implementations are EPL-2.0, BSD-3-Clause, and Apache-2.0
Compatible Implementation
An implementation of a Jakarta specification is considered to be a Compatible Implementation when it can demonstrate that it fulfills all the requirements of the Technology Compatibility Kit (TCK) for that particular specification. For example, Hibernate Validator 7.0 and Hibernate Validator 8.0 are both compatible implementations of Jakarta Bean Validation 3.0. Hibernate Validator 7.0 were used as ratifying compatible implementation when Jakarta Bean Validation 3.0 was released and is therefore listed on the Jakarta Bean Validation 3.0 specification page.
Compatible Product
A Compatible Product is a Compatible Implementation of the Jakarta EE Platform, Jakarta EE Web Profile, or Jakarta EE Core Profile. In addition to fulfilling the requirements of the Jakarta EE Platform, Jakarta EE Web Profile, or Jakarta EE Core Profile TCKs, the implementor must participate in the Jakarta EE Compatibility Program to be listed on the Jakarta EE Compatible Products page.
The Jakarta EE compatible logo can only be used by those that have implemented a Jakarta EE Compatible Product as well as fulfill the requirements of the Jakarta EE Compatibility Program.