Un kit de compatibilidad tecnológica ( TCK ) es un conjunto de pruebas que, al menos nominalmente, verifica una supuesta implementación particular de una solicitud de especificación de Java ( JSR ) para verificar el cumplimiento. Es una de las tres piezas necesarias para un JSR ratificado en el Proceso de la comunidad de Java , que son:
- la especificación JSR
- la implementación de referencia JSR
- el kit de compatibilidad tecnológica (TCK)
Contenidos y arquitectura
Los TCK tienden a obtenerse del líder de especificación de un JSR determinado. Por lo general (pero no siempre) consisten en una aplicación de 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. Normalmente, el dispositivo obtiene las pruebas a través de HTTP y los resultados se envían a la aplicación host de forma 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 potencia para ejecutar la aplicación de host TCK completa.
Las pruebas contenidas en JSR supuestamente se derivan de las declaraciones en la especificación JSR. Cualquier API determinada tendrá un conjunto de pruebas para garantizar que se comporte 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 la especificación. Debido a esto, los TCK son de gran importancia al implementar un JSR. El primer gran hito es hacer 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; debido a que debe ser lo suficientemente flexible para hacer frente a cualquier implementación, hay muchas opciones. (Por ejemplo, enumerar todos los formatos multimedia compatibles y los controles opcionales asociados para JSR135 ). Las pruebas particulares también requieren alguna actividad de configuración; esto tiende a ser particularmente complejo para las pruebas que aseguran el comportamiento correcto en condiciones de error, porque la implementación de Java debe colocarse 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 está principalmente completo una vez que pasan las 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 hacer muchas pruebas en el mundo real para abordar estas deficiencias, aunque los conjuntos de pruebas adicionales como JDTS pueden ayudar.
TCK para la plataforma Java
El Kit de compatibilidad de tecnología para una plataforma Java en particular se llama Kit de compatibilidad de Java (JCK) . Es un extenso conjunto de pruebas utilizado por Oracle y los licenciatarios para garantizar implementaciones compatibles de la plataforma.
Se ha publicado el código fuente de 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 el JCK en el contexto de OpenJDK, es decir, para cualquier implementación de GPL que se derive sustancialmente de OpenJDK. [4] [5]
El acuerdo de licencia OpenJDK Community TCK v 2.0 se ha publicado para la especificación Java SE 7 desde diciembre de 2011. [6]
Marco TCK
La herramienta de aprovechamiento JavaTest es hoy en día el marco de pruebas unitarias más común que se utiliza para verificar el cumplimiento de la implementación. Es un marco de prueba de propósito general diseñado para ejecutar pruebas TCK. Sin embargo, algunas especificaciones también utilizan JUnit o TestNG . [7]
Licencia y controversia
Después del lanzamiento de OpenJDK por parte de Sun, Sun lanzó una licencia específica para permitir la ejecución de 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 TCK. El 9 de noviembre de 2010, Apache Software Foundation amenazó con retirarse del Java Community Process si no se les concedía una licencia TCK para Harmony sin restricciones adicionales. [9]
El 9 de diciembre de 2010, Apache Software Foundation renunció a su puesto en el Comité Ejecutivo de Java SE / EE. [10]
Ver también
Referencias
- ↑ a b Hamilton, Graham (13 de diciembre de 2004). "Fuentes de prueba de compatibilidad J2SE publicadas" . Archivado desde el original el 16 de diciembre de 2004 . Consultado el 8 de marzo de 2008 .
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, a través de una licencia de clic; No hay "mancha". 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 comentarios y opiniones públicamente.
- ^ Proyecto JCK Archivado el 8 de julio de 2007 en la Wayback Machine.
- ^ " ACUERDO DE LICENCIA FUENTE " " SOLO LEA", v1.0 JAVA (TM) COMPATIBILITY KIT 6a " . Sun Microsystems . Junio de 2007. Archivado desde el original el 31 de diciembre de 2010 . Consultado el 8 de marzo de 2008 .
- ^ Darcy, Joseph (6 de marzo de 2008). "Coincidencia de versiones de JDK y JCK" . Archivado desde el original el 12 de agosto de 2011 . Consultado el 8 de marzo de 2008 .
Si está interesado en ejecutar el JCK en el contexto de proyectos OpenJDK, hay una licencia disponible.
- ^ "ACUERDO DE LICENCIA DE OPENJDK COMMUNITY TCK V 1.1" (PDF) . Sun Microsystems . Consultado el 8 de marzo de 2008 .
Sujeto y condicionado a que su 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 distribuye bajo la Licencia GPL, Sun otorga al Licenciatario, en la medida de la Intelectualidad de Sun Derechos de propiedad en el TCK, una licencia mundial, personal, no exclusiva, intransferible y limitada para usar el TCK internamente y únicamente con el propósito de desarrollar y probar la Implementación del Licenciatario.
- ^ [1]
- ^ https://java.net/projects/jbatch/sources/jsr-352-git-repository/show
- ^ "ACUERDO DE LICENCIA DE OPENJDK COMMUNITY TCK V 1.1" (PDF) . Sun Microsystems . Consultado el 8 de marzo de 2008 .
Sujeto y condicionado a que su 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 distribuye bajo la Licencia GPL, Sun otorga al Licenciatario, en la medida de la Intelectualidad de Sun Derechos de propiedad en el TCK, una licencia mundial, personal, no exclusiva, intransferible y limitada para usar el TCK internamente y únicamente con el propósito de desarrollar y probar la Implementación del Licenciatario.
- ^ Declaración de la Junta de ASF sobre nuestra participación en Java Community Process ,blog de Apache Software Foundation , 2010-11-09
- ^ La ASF dimite del Comité Ejecutivo de JCP ,blog de Apache Software Foundation , 2010-12-09
enlaces externos
- Las herramientas de prueba de compatibilidad de Java
- Recursos comunitarios de JCP - Herramientas de TCK