Technology Compatibility Kit

Technology Compatibility Kit

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 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 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.

TCK for the Java platform

The Technology Compatibility Kit for a particular Java platform 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 releasedcite web
url=http://weblogs.java.net/blog/kgh/archive/2004/12/j2se_compatibil.html
title=J2SE Compatibility Test Sources Released
last=Hamilton|first=Graham
quote="We have tried to make sure the license meets the reasonable needs of developers who want to evaluate the JCK sources: It's available at zero cost, through a click-through license; There is no "tainting". Once you delete your copy of the JCK, you aren't constrained in your future actions. To try to make this really clear, we included a section explicitly granting what the lawyers call "residual rights", which basically means that stuff that sticks in your head is OK to use in the future; You can publish feedback and comments publicly."
date=2004-12-13
accessdate=2008-03-08
] [ [https://jck.dev.java.net/ JCK project] ] . The associated license did not initially allow users to compile or run the tests [cite web
url=https://jck.dev.java.net/jck-read-only-license.txt
title="READ ONLY" SOURCE LICENSE AGREEMENT, v1.0 JAVA (TM) COMPATIBILITY KIT 6a
publisher=Sun Microsystems
date=June 2007
accessdate=2008-03-08
] , 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 [cite web
url=http://blogs.sun.com/darcy/entry/matching_jdk_and_jck_versions
title=Matching JDK and JCK Versions
last=Darcy|first=Joseph
quote="If you're interested in running the JCK in context of OpenJDK projects, a license is available."
date=2008-03-06
accessdate=2008-03-08
] [cite web
url=http://openjdk.java.net/legal/openjdk-tck-license.pdf
title=OPENJDK COMMUNITY TCK LICENSE AGREEMENT V 1.1
publisher=Sun Microsystems
quote="Subject to and conditioned upon its Licensee Implementation being substantially derived from OpenJDK Code and, if such Implementation has or is to be distributed to a third party, its being distributed under the GPL License, Sun hereby grants to Licensee, to the extent of Sun's Intellectual Property Rights in the TCK, a worldwide, personal, non-exclusive, non-transferable, limited license to use the TCK internally and solely for the purpose of developing and testing Licensee Implementation."
accessdate=2008-03-08
] .

TCK framework

The JavaTest harness 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.

ee also

Java Community Process

References

External links

* [http://java.sun.com/developer/technicalArticles/JCPtools2/ The Java Compatibility Test Tools]
* [http://www.jcp.org/en/resources/tdk/ JCP Community Resources - TCK Tools]


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Look at other dictionaries:

  • Content Repository for Java Technology API — (JCR) ist eine Spezifikation für eine Java Plattform API, um auf Content in einer einheitlichen Methode zuzugreifen.[1][2] Content Repositories werden von den unterschiedlichsten Informationssystemen genutzt, die beliebige Dokumente zusammen mit… …   Deutsch Wikipedia

  • MOS Technology — Not to be confused with Mostek. MOS Technology, Inc. Industry Semiconductor design and manufacturing Predecessor Allen Bradley Successor Co …   Wikipedia

  • Virtual Studio Technology — Steinberg s Virtual Studio Technology (VST) is an interface for integrating software audio synthesizer and effect plugins with audio editors and hard disk recording systems. VST and similar technologies use Digital Signal Processing to simulate… …   Wikipedia

  • OpenJDK — OpenJDK6 Developer(s) Sun Microsystems Initial release OpenJDK6 Build b05 February 12, 2008; 3 years ago (2008 02 12)[1] Stable release …   Wikipedia

  • Java (software platform) — Not to be confused with JavaScript. Java Original author(s) Oracle Corporation Developer(s) James Gosling / Sun Microsystems …   Wikipedia

  • Apache Harmony — Infobox Software name = Apache Harmony caption = Demonstration of the Apache Harmony running Java 2D Demo collapsible = yes developer = Apache Software Foundation latest release version = 5.0 M7 latest release date = release date|2008|07|31… …   Wikipedia

  • JCK — may refer to:*JCK India magazine, a trade publication magazine serving the information needs of Indian Jewelers *Java Compatibility Kit, a technology compatibility kit for a particular Java platform …   Wikipedia

  • IcedTea — ist ein vom Linux Distributor Red Hat initiiertes Gemeinschaftsprojekt zur Entwicklung freier Java Plattformsoftware. Das Projekt arbeitet(e) an folgenden Produkten: OpenJDK freie Implementierung der Java Platform, Standard Edition (Java SE), die …   Deutsch Wikipedia

  • OpenJDK — Тип Библиотека Разработчик Oracle (ранее Sun Mic …   Википедия

  • Sun acquisition by Oracle — The acquisition of Sun Microsystems by Oracle Corporation was completed by Oracle on January 27, 2010. Significantly, Oracle, previously only a software vendor, now owned both hardware and software product lines from Sun (e.g. SPARCstations and… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”