Zestaw zgodności technologii
Zestaw zgodności technologii ( TCK ) to zestaw testów, który przynajmniej nominalnie sprawdza określoną rzekomą implementację żądania specyfikacji Java (JSR) pod kątem zgodności. Jest to jeden z trzech wymaganych elementów ratyfikowanego JSR w Java Community Process , którymi są:
- specyfikacji JSR
- implementacja referencyjna JSR
- Zestaw zgodności technologii (TCK)
Treść i architektura
TCK są zwykle uzyskiwane od Kierownika Specyfikacji danego JSR. Zwykle (ale nie zawsze) składają się one z graficznej aplikacji hosta, która komunikuje się za pośrednictwem protokołu TCP/IP z testowanym urządzeniem lub maszyną wirtualną Java. Testy są zwykle uzyskiwane przez urządzenie za pośrednictwem protokołu HTTP, a wyniki są wysyłane z powrotem do aplikacji hosta w podobny sposób. To oddzielenie umożliwia używanie TCK do testowania maszyn wirtualnych na urządzeniach takich jak telefony komórkowe CLDC , które nie mają mocy do uruchomienia pełnej aplikacji hosta TCK.
Testy zawarte w JSR rzekomo wywodzą się z instrukcji zawartych w specyfikacji JSR. Każdy dany interfejs API będzie miał zestaw testów, aby upewnić się, że zachowuje się w zamierzony sposób, w tym w warunkach błędów.
Aby stwierdzić zgodność z danym JSR, implementacja Java musi przekazać powiązany TCK. Wszelkie (rzadkie) wyjątki muszą być negocjowane z liderem specyfikacji. Z tego powodu TCK mają ogromne znaczenie podczas wdrażania JSR. Pierwszym wielkim kamieniem milowym jest uruchomienie TCK, co z konieczności obejmuje implementację Javy i leżący u jej podstaw stos sieciowy o pewnym poziomie dojrzałości. Następnie TCK muszą być odpowiednio skonfigurowane – ponieważ muszą być na tyle elastyczne, aby poradzić sobie z każdą implementacją, opcji jest wiele. (Na przykład lista wszystkich obsługiwanych formatów multimediów i powiązanych opcjonalnych elementów sterujących dla JSR135 ). Poszczególne testy wymagają również pewnej czynności konfiguracyjnej - jest to szczególnie skomplikowane w przypadku testów, które zapewniają poprawne zachowanie w warunkach błędu, ponieważ implementacja Javy musi zostać doprowadzona do odpowiedniego stanu, aby spowodować każdy błąd. Na koniec każdy test, który zakończył się niepowodzeniem, musi zostać naprawiony, co zwykle jest obsługiwane przez zwykłe śledzenia defektów .
Niektórzy implementatorzy języka Java uważają, że ich produkt jest w zasadzie kompletny po przejściu TCK. Chociaż prawdą jest, że TCK są dość wszechstronne, istnieje wiele obszarów, których nie obejmują. Obejmują one wydajność, a także opcjonalne funkcje. Nie ma innej alternatywy, jak przeprowadzić wiele testów w świecie rzeczywistym, aby zaradzić tym niedociągnięciom, chociaż dodatkowe zestawy testów, takie jak JDTS , mogą pomóc.
TCK dla platformy Java
Zestaw zgodności technologii dla określonej platformy Java nosi nazwę Java Compatibility Kit (JCK) . Jest to rozbudowany zestaw testów wykorzystywany przez firmę Oracle i licencjobiorców w celu zapewnienia zgodności implementacji platformy.
JCK for Java 6.0 został wydany. Powiązana licencja początkowo nie pozwalała użytkownikom na kompilowanie ani uruchamianie testów, ale prawo do wglądu do kodu nie wiąże się z obawami o skażenie, a publiczne komentarze na temat kodu źródłowego są dozwolone. Jednak od czasu wydania OpenJDK specyficzna licencja pozwala na uruchamianie JCK w kontekście OpenJDK, czyli dla dowolnej implementacji GPL wywodzącej się zasadniczo z OpenJDK.
Umowa licencyjna OpenJDK Community TCK w wersji 2.0 jest publikowana dla specyfikacji Java SE 7 od grudnia 2011 r.
ramy TCK
Narzędzie uprzęży JavaTest jest obecnie najpowszechniejszym frameworkiem do testów jednostkowych używanym do weryfikacji zgodności implementacji. Jest to platforma testowa ogólnego przeznaczenia zaprojektowana do uruchamiania testów TCK. Jednak niektóre specyfikacje używają również JUnit lub TestNG .
Licencja i kontrowersje
Po wydaniu OpenJDK przez firmę Sun firma Sun wydała specjalną licencję zezwalającą na uruchamianie TCK w kontekście OpenJDK dla dowolnej implementacji GPL wywodzącej się zasadniczo z OpenJDK.
To wymaganie pozbawia projekt Apache Harmony prawa do korzystania z TCK zgodnego z licencją Apache . 9 listopada 2010 r. Apache Software Foundation zagroziła wycofaniem się z Java Community Process, jeśli nie otrzyma licencji TCK na Harmony bez dodatkowych ograniczeń.
9 grudnia 2010 Apache Software Foundation złożyła rezygnację z członkostwa w Komitecie Wykonawczym Java SE/EE.