Technology Compatibility Kit
Encyclopedia
A Technology Compatibility Kit (TCK) is a suite of tests that at least nominally checks a particular alleged implementation of a Java Specification Request (JSR) for compliance. It is one of the three required pieces for a ratified JSR in the Java Community Process
, which are:
The tests contained in the JSR are supposedly derived from the statements in the JSR specification. Any given API will have a set of tests to ensure that it behaves in the intended way, including in error conditions.
In order to state conformance with a given JSR, a Java implementation has to pass the associated TCK. Any (rare) exceptions have to be negotiated with the specification lead. Because of this, TCKs are of great importance when implementing a JSR. The first great milestone is to get the TCK running in the first place, which necessarily involves the Java implementation and underlying networking stack having a certain level of maturity. Next, the TCK must be properly configured - because they must be flexible enough to cope with any implementation, there are many options. (For example, listing all the supported media formats and associated optional controls for JSR135). Particular tests also require some setup activity - this tends to be particularly complex for the tests which ensure correct behaviour in error conditions, because the Java implementation must be put in the right state to cause each error. Finally, each failing test must be fixed, which is usually handled by the usual defect tracking
mechanisms.
Some Java implementors consider their product to be mainly complete once the TCKs pass. Whilst it's true that the TCKs are quite comprehensive, there are many areas that they do not cover. These include performance, as well as the optional features. There's no alternative but to do lots of real-world testing to address these shortcomings, although additional test suites such as JDTS
may help.
is called Java Compatibility Kit (JCK). It is an extensive test suite used by Sun Microsystems
and licensees to ensure compatible implementations of the platform.
The JCK for Java 6.0 source code has been released. The associated license did not initially allow users to compile or run the tests, but the right to see the code is not associated with tainting concerns, and public comments on the source code are allowed. However, since the release of OpenJDK
, a specific license allow to run the JCK in the OpenJDK context, that is for any GPL
implementation deriving substantially from OpenJDK .
tool is today the most common unit testing framework used to verify the implementation compliance. It is a general purpose testing framework designed to run TCK tests. However, some specifications are also using JUnit
.
, Sun released a specific license to permit running the TCK in the OpenJDK context for any GPL
implementation deriving substantially from OpenJDK.
This requirement denies the Apache Harmony
project an Apache License
-compatible right to use the TCK. On November 9, 2010, the Apache Software Foundation
threatened to withdraw from the Java Community Process if they were not granted a TCK license for Harmony without additional restrictions.
On December 9, 2010, the Apache Software Foundation
resigned its seat on the Java SE/EE Executive Committee.
Java Community Process
The Java Community Process or JCP, established in 1998, is a formalized process that allows interested parties to get involved in the definition of future versions and features of the Java platform....
, which are:
- the JSR specification
- the JSR reference implementation
- the Technology Compatibility Kit (TCK)
Contents and architecture
TCKs tend to be obtained from the Specification Lead of a given JSR. They usually (but not always) consist of a graphical host application which communicates over TCP/IP with the device or Java virtual machine that is under test. Tests are typically obtained by the device over HTTP, and results are posted back to the host application in a similar way. This decoupling enables TCKs to be used to test virtual machines on devices such as CLDC mobile phones which do not have the power to run the full TCK host application.The tests contained in the JSR are supposedly derived from the statements in the JSR specification. Any given API will have a set of tests to ensure that it behaves in the intended way, including in error conditions.
In order to state conformance with a given JSR, a Java implementation has to pass the associated TCK. Any (rare) exceptions have to be negotiated with the specification lead. Because of this, TCKs are of great importance when implementing a JSR. The first great milestone is to get the TCK running in the first place, which necessarily involves the Java implementation and underlying networking stack having a certain level of maturity. Next, the TCK must be properly configured - because they must be flexible enough to cope with any implementation, there are many options. (For example, listing all the supported media formats and associated optional controls for JSR135). Particular tests also require some setup activity - this tends to be particularly complex for the tests which ensure correct behaviour in error conditions, because the Java implementation must be put in the right state to cause each error. Finally, each failing test must be fixed, which is usually handled by the usual defect tracking
Defect tracking
In engineering, defect tracking is the process of finding defects in a product , and making new versions of the product that fix the defects...
mechanisms.
Some Java implementors consider their product to be mainly complete once the TCKs pass. Whilst it's true that the TCKs are quite comprehensive, there are many areas that they do not cover. These include performance, as well as the optional features. There's no alternative but to do lots of real-world testing to address these shortcomings, although additional test suites such as JDTS
JDTS
Sun's Java Device Test Suite is the de-facto industry-standard tool for assessing the quality of Java Platform, Micro Edition implementations.This tool performs quality testing for devices using the Java ME platform....
may help.
TCK for the Java platform
The Technology Compatibility Kit for a particular Java platformJava Platform, Standard Edition
Java Platform, Standard Edition or Java SE is a widely used platform for programming in the Java language. It is the Java Platform used to deploy portable applications for general use...
is called Java Compatibility Kit (JCK). It is an extensive test suite used by Sun Microsystems
Sun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...
and licensees to ensure compatible implementations of the platform.
The JCK for Java 6.0 source code has been released. The associated license did not initially allow users to compile or run the tests, but the right to see the code is not associated with tainting concerns, and public comments on the source code are allowed. However, since the release of OpenJDK
OpenJDK
OpenJDK is a free and open source implementation of the Java programming language. It is the result of an effort Sun Microsystems began in 2006...
, a specific license allow to run the JCK in the OpenJDK context, that is for any GPL
GNU General Public License
The GNU General Public License is the most widely used free software license, originally written by Richard Stallman for the GNU Project....
implementation deriving substantially from OpenJDK .
TCK framework
The JavaTest harnessJavaTest harness
The JavaTest harness is a regression tests framework specifically designed by Sun Microsystems to tests the reference Java platform implementation....
tool is today the most common unit testing framework used to verify the implementation compliance. It is a general purpose testing framework designed to run TCK tests. However, some specifications are also using JUnit
JUnit
JUnit is a unit testing framework for the Java programming language. JUnit has been important in the development of test-driven development, and is one of a family of unit testing frameworks collectively known as xUnit that originated with SUnit....
.
License and controversy
Subsequent to Sun's release of OpenJDKOpenJDK
OpenJDK is a free and open source implementation of the Java programming language. It is the result of an effort Sun Microsystems began in 2006...
, Sun released a specific license to permit running the TCK in the OpenJDK context for any GPL
GNU General Public License
The GNU General Public License is the most widely used free software license, originally written by Richard Stallman for the GNU Project....
implementation deriving substantially from OpenJDK.
This requirement denies the Apache Harmony
Apache Harmony
Apache Harmony was an open source, free Java implementation, developed by the Apache Software Foundation. It was announced in early May 2005 and on October 25, 2006, the Board of Directors voted to make Apache Harmony a top-level project...
project an Apache License
Apache License
The Apache License is a copyfree free software license authored by the Apache Software Foundation . The Apache License requires preservation of the copyright notice and disclaimer....
-compatible right to use the TCK. On November 9, 2010, the Apache Software Foundation
Apache Software Foundation
The Apache Software Foundation is a non-profit corporation to support Apache software projects, including the Apache HTTP Server. The ASF was formed from the Apache Group and incorporated in Delaware, U.S., in June 1999.The Apache Software Foundation is a decentralized community of developers...
threatened to withdraw from the Java Community Process if they were not granted a TCK license for Harmony without additional restrictions.
On December 9, 2010, the Apache Software Foundation
Apache Software Foundation
The Apache Software Foundation is a non-profit corporation to support Apache software projects, including the Apache HTTP Server. The ASF was formed from the Apache Group and incorporated in Delaware, U.S., in June 1999.The Apache Software Foundation is a decentralized community of developers...
resigned its seat on the Java SE/EE Executive Committee.