The TCK (Technology Compatibility Kit) is the official Java SE test suite, originally developed and licensed by Sun Microsystems, used to test compatibility as well as performance of the JRE/JDK against the Java SE specifications.
The TCK suite contains more than 100.000 individual tests (~100K for Java 8, ~120K for Java 11) and running the complete test suite on a single computer requires several days. To achieve manageable execution times on embedded platforms the TCK suite can be partitioned.
The TCK test suite contains tests for a wide range of areas, including, but not limited to testing the following:
- Java SE APIs
- Runtime performance of the JIT compiled Java code
- Performance of API implementations
- Correctness of the JIT compilers
- Correctness of the Byte Code interpreter
- Correctness of the Byte Coder parsers, verifiers
- Correctness of the javac compiler
- The correct implementation of the Java memory model in the JVM (memory layout, memory barriers, thread synchronization, atomic access)
- The garbage collectors
Any JRE/JDK individual binary must pass the TCK to be allowed to be labelled “Java SE compatible”. It is insufficient to test a “representative binary” or to declare other binaries compiled from the same source as compatible.
Below are some popular OpenJDK distros and the status of their TCK compliance.
TCK License and Access
The TCK is Oracle Intellectual Property, licensed by Oracle to certain third parties. It is not open source. Further TCK related information:
- Access conditions: https://openjdk.java.net/groups/conformance/JckAccess/
- Current licensees: https://openjdk.java.net/groups/conformance/JckAccess/jck-access.html
- Documentation: https://jcp.org/en/resources/tdk