Un kit de compatibilidad tecnológica ( TCK ) es un conjunto de pruebas que, al menos nominalmente, verifican el cumplimiento de una supuesta implementación particular de una solicitud de especificación de Java (JSR). Es una de las tres piezas requeridas para un JSR ratificado en el Proceso de la Comunidad Java , que son:
Los TCK tienden a obtenerse del líder de especificación de un JSR determinado. Por lo general (pero no siempre) constan de una aplicación host gráfica que se comunica a través de TCP/IP con el dispositivo o la máquina virtual Java que se está probando. Por lo general, el dispositivo obtiene las pruebas a través de HTTP y los resultados se envían a la aplicación host de manera similar. Este desacoplamiento permite que los TCK se utilicen para probar máquinas virtuales en dispositivos como teléfonos móviles CLDC que no tienen la capacidad para ejecutar la aplicación host TCK completa.
Las pruebas contenidas en el JSR supuestamente se derivan de las declaraciones de la especificación JSR. Cualquier API determinada tendrá un conjunto de pruebas para garantizar que se comporta de la forma prevista, incluso en condiciones de error.
Para declarar la conformidad con un JSR determinado, una implementación de Java debe pasar el TCK asociado. Cualquier excepción (rara) debe negociarse con el responsable de especificaciones. Por este motivo, los TCK son de gran importancia a la hora de implementar un JSR. El primer gran hito es lograr que TCK se ejecute en primer lugar, lo que necesariamente implica que la implementación de Java y la pila de red subyacente tengan un cierto nivel de madurez. A continuación, el TCK debe configurarse correctamente; como debe ser lo suficientemente flexible para hacer frente a cualquier implementación, existen muchas opciones. (Por ejemplo, enumerar todos los formatos multimedia admitidos y los controles opcionales asociados para JSR135 ). Las pruebas particulares también requieren cierta actividad de configuración; esto tiende a ser particularmente complejo para las pruebas que aseguran un comportamiento correcto en condiciones de error, porque la implementación de Java debe ponerse en el estado correcto para causar cada error. Finalmente, cada prueba fallida debe corregirse, lo que generalmente se maneja mediante los mecanismos habituales de seguimiento de defectos .
Algunos implementadores de Java consideran que su producto estará prácticamente completo una vez que pasen los TCK. Si bien es cierto que los TCK son bastante completos, hay muchas áreas que no cubren. Estos incluyen el rendimiento, así como las características opcionales. No hay otra alternativa que realizar muchas pruebas en el mundo real para abordar estas deficiencias, aunque conjuntos de pruebas adicionales como JDTS pueden ayudar.
El kit de compatibilidad tecnológica para una plataforma Java concreta se denomina kit de compatibilidad de Java (JCK) . Es un amplio conjunto de pruebas utilizado por Oracle y sus licenciatarios para garantizar implementaciones compatibles de la plataforma.
Se ha publicado el código fuente JCK para Java 6.0 . [1] [2] La licencia asociada inicialmente no permitía a los usuarios compilar o ejecutar las pruebas, [3] pero el derecho a ver el código no está asociado con problemas de contaminación y se permiten comentarios públicos sobre el código fuente. [1] Sin embargo, desde el lanzamiento de OpenJDK , una licencia específica permite ejecutar JCK en el contexto OpenJDK, es decir, para cualquier implementación GPL que se derive sustancialmente de OpenJDK. [4] [5]
El Acuerdo de licencia OpenJDK Community TCK v 2.0 se publicó para la especificación Java SE 7 desde diciembre de 2011. [6]
La herramienta de arnés JavaTest es hoy el marco de pruebas unitarias más común utilizado para verificar el cumplimiento de la implementación. Es un marco de pruebas de propósito general diseñado para ejecutar pruebas TCK. Sin embargo, algunas especificaciones también utilizan JUnit o TestNG . [7]
Después del lanzamiento de OpenJDK por parte de Sun , Sun lanzó una licencia específica para permitir ejecutar TCK en el contexto de OpenJDK para cualquier implementación de GPL que se derive sustancialmente de OpenJDK. [8]
Este requisito niega al proyecto Apache Harmony un derecho compatible con la licencia Apache para utilizar el TCK. El 9 de noviembre de 2010, la Apache Software Foundation amenazó con retirarse del Proceso de la comunidad Java si no se les concedía una licencia TCK para Harmony sin restricciones adicionales. [9]
El 9 de diciembre de 2010, la Apache Software Foundation renunció a su puesto en el Comité Ejecutivo de Java SE/EE. [10]
Hemos tratado de asegurarnos de que la licencia satisfaga las necesidades razonables de los desarrolladores que desean evaluar las fuentes de JCK: está disponible sin costo alguno, a través de una licencia de clic; No hay "contaminación". Una vez que elimine su copia del JCK, no estará limitado en sus acciones futuras. Para tratar de dejar esto realmente claro, incluimos una sección que otorga explícitamente lo que los abogados llaman "derechos residuales", lo que básicamente significa que las cosas que se te quedan en la cabeza están bien para usar en el futuro; Puede publicar opiniones y comentarios públicamente.
Si está interesado en ejecutar JCK en el contexto de proyectos OpenJDK, hay una licencia disponible.
Sujeto y condicionado a que la Implementación del Licenciatario se derive sustancialmente del Código OpenJDK y, si dicha Implementación se ha distribuido o se va a distribuir a un tercero, se distribuya bajo la Licencia GPL, por la presente Sun otorga al Licenciatario, en la medida de los derechos intelectuales de Sun. Derechos de propiedad en TCK, una licencia mundial, personal, no exclusiva, intransferible y limitada para usar TCK internamente y únicamente con el fin de desarrollar y probar la implementación del Licenciatario.
Sujeto y condicionado a que la Implementación del Licenciatario se derive sustancialmente del Código OpenJDK y, si dicha Implementación se ha distribuido o se va a distribuir a un tercero, se distribuya bajo la Licencia GPL, por la presente Sun otorga al Licenciatario, en la medida de los derechos intelectuales de Sun. Derechos de propiedad en TCK, una licencia mundial, personal, no exclusiva, intransferible y limitada para usar TCK internamente y únicamente con el fin de desarrollar y probar la implementación del Licenciatario.