En Java, un Kit de Compatibilidad Tecnológica ( TCK o JCK ) es un conjunto de pruebas que, al menos nominalmente, verifica el cumplimiento de una supuesta implementación particular de una Solicitud de Especificación Java (JSR). [ 1 ] [ 2 ] Es uno de los tres elementos requeridos para una JSR ratificada en el Proceso de la Comunidad 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 suelen obtenerse del responsable de especificaciones de un JSR determinado. Generalmente (aunque no siempre) consisten en una aplicación gráfica que se comunica mediante TCP/IP con el dispositivo o la máquina virtual Java que se está probando. El dispositivo suele obtener las pruebas mediante HTTP, y los resultados se envían de vuelta a la aplicación host de forma similar. Este desacoplamiento permite utilizar los TCK para probar máquinas virtuales en dispositivos como teléfonos móviles CLDC , que no tienen la potencia suficiente para ejecutar la aplicación host completa del TCK.
Se supone que las pruebas incluidas en JSR derivan de las declaraciones de la especificación JSR. Cualquier API tendrá un conjunto de pruebas para garantizar que se comporte de la manera prevista, incluso en caso de error.
Para declarar la conformidad con una JSR determinada, una implementación Java debe superar el TCK asociado. Cualquier excepción (poco frecuente) debe negociarse con el responsable de la especificación. Por ello, los TCK son de suma importancia al implementar una JSR. El primer gran hito es lograr que el TCK funcione correctamente, lo que implica necesariamente que la implementación Java y la pila de red subyacente tengan un cierto nivel de madurez. A continuación, el TCK debe configurarse adecuadamente; dado que debe ser lo suficientemente flexible para adaptarse a cualquier implementación, existen muchas opciones (por ejemplo, listar todos los formatos multimedia compatibles y los controles opcionales asociados para JSR135 ). Las pruebas específicas también requieren cierta configuración; esto suele ser particularmente complejo para las pruebas que garantizan el comportamiento correcto en condiciones de error, ya que la implementación Java debe estar en el estado adecuado para provocar cada error. Finalmente, cada prueba que falle debe corregirse, lo que generalmente se gestiona mediante los mecanismos habituales de seguimiento de defectos .
Algunos desarrolladores de Java consideran que su producto está prácticamente terminado una vez que superan las pruebas TCK. Si bien es cierto que las TCK son bastante completas, hay muchas áreas que no cubren. Estas incluyen el rendimiento, así como las funcionalidades opcionales. No queda otra alternativa que realizar numerosas pruebas en entornos reales para solucionar estas deficiencias, aunque conjuntos de pruebas adicionales como JDTS pueden ser de ayuda.
TCK para la plataforma Java
El kit de compatibilidad tecnológica para una plataforma Java específica se denomina Java Compatibility Kit (JCK) . Se trata de un conjunto de pruebas exhaustivo utilizado por Oracle y sus licenciatarios para garantizar la compatibilidad de las implementaciones de la plataforma.
Se ha publicado el código fuente de JCK para Java 6.0 . [ 3 ] [ 4 ] La licencia asociada inicialmente no permitía a los usuarios compilar ni ejecutar las pruebas, [ 5 ] pero el derecho a ver el código no está asociado con preocupaciones de contaminación, y se permiten comentarios públicos sobre el código fuente. [ 3 ] Sin embargo, desde el lanzamiento de OpenJDK , una licencia específica permite ejecutar JCK en el contexto de OpenJDK, es decir, para cualquier implementación GPL que derive sustancialmente de OpenJDK. [ 6 ] [ 7 ]
El Acuerdo de Licencia TCK de la Comunidad OpenJDK v 2.0 se publicó para la Especificación Java SE 7 en diciembre de 2011. [ 8 ]
Marco TCK
La herramienta JavaTest es actualmente el marco de pruebas unitarias más común 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 . [ 9 ]
Licencia y controversia
Posteriormente al lanzamiento de OpenJDK por parte de Sun , Sun publicó una licencia específica para permitir la ejecución de TCK en el contexto de OpenJDK para cualquier implementación GPL que derive sustancialmente de OpenJDK. [ 10 ]
Este requisito niega al proyecto Apache Harmony un derecho compatible con la Licencia Apache para usar el TCK. El 9 de noviembre de 2010, la Apache Software Foundation amenazó con retirarse del Java Community Process si no se les concedía una licencia TCK para Harmony sin restricciones adicionales. [ 11 ]
El 9 de diciembre de 2010, la Apache Software Foundation renunció a su puesto en el Comité Ejecutivo de Java SE/EE. [ 12 ]
Véase también
Referencias
- ↑ "Obteniendo acceso al JCK" . Sun Microsystems . Junio de 2007. Consultado el 27 de noviembre de 2025 .
{{cite web}}: CS1 mantenimiento: estado de la URL ( enlace ) - ↑ "Utilice las pruebas TCK para garantizar que su distribución de Java cumpla con la especificación Java SE" . Azul Systems . Junio de 2007. Consultado el 27 de noviembre de 2025 .
{{cite web}}: CS1 mantenimiento: estado de la URL ( enlace ) - 1 2 Hamilton, Graham (2004-12-13). "Se publicaron las fuentes de la prueba de compatibilidad de J2SE" . Archivado del original el 16-12-2004 . Recuperado el 08-03-2008 .
Hemos intentado 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 de JCK, no estará restringido 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 le queden en la cabeza están bien para usarlas en el futuro; Puede publicar comentarios y opiniones públicamente.
- ↑ Proyecto JCK archivado el 8 de julio de 2007 en Wayback Machine .
- ↑ "ACUERDO DE LICENCIA DE FUENTE "SOLO LECTURA", v1.0 JAVA (TM) COMPATIBILITY KIT 6a" . Sun Microsystems . Junio de 2007. Consultado el 8 de marzo de 2008 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ Darcy, Joseph (6 de marzo de 2008). "Compatibilidad de versiones de JDK y JCK" . Consultado el 8 de marzo de 2008. Si
le interesa ejecutar JCK en el contexto de proyectos OpenJDK, hay una licencia disponible.
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "OPENJDK COMMUNITY TCK LICENSE AGREEMENT V 1.1" (PDF) . Sun Microsystems . Consultado el 8 de marzo de 2008 .
Sujeto a 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 distribuya bajo la Licencia GPL, Sun otorga por la presente al Licenciatario, en la medida de los Derechos de Propiedad Intelectual de Sun 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.
- ↑ "Acuerdo de licencia TCK de la comunidad OpenJDK V 2.0" (PDF) . openjdk.java.net .
- ↑ "Explorar código fuente: jsr-352-git-repository" . Archivado del original el 5 de marzo de 2013. Consultado el 12 de febrero de 2014 .
- ↑ "OPENJDK COMMUNITY TCK LICENSE AGREEMENT V 1.1" (PDF) . Sun Microsystems . Consultado el 8 de marzo de 2008 .
Sujeto a 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 distribuya bajo la Licencia GPL, Sun otorga por la presente al Licenciatario, en la medida de los Derechos de Propiedad Intelectual de Sun 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 Directiva de la ASF sobre nuestra participación en el Proceso de la Comunidad Java ,blog de la Apache Software Foundation , 9 de noviembre de 2010
- ↑ La ASF renuncia al Comité Ejecutivo del JCP ,blog de la Apache Software Foundation , 9 de diciembre de 2010
Enlaces externos
- Herramientas de prueba de compatibilidad de Java
- Recursos de la comunidad JCP - Herramientas TCK
- Proceso TCK de EE de Yakarta 1.4.1
- Lista del Acuerdo de Licencia TCK de la Comunidad OpenJDK (OCTLA)
- Java (plataforma de software)