Technology Compatibility Kit ( TCK ) представляет собой набор тестов, по крайней мере номинально проверяет конкретный предполагаемый реализация Java Specification Request ( JSR ) на предмет соответствия. Это одна из трех необходимых частей для ратифицированной JSR в процессе сообщества Java , а именно:
- спецификация JSR
- эталонная реализация JSR
- Комплект совместимости технологий (TCK)
Содержание и архитектура
TCK обычно получают от руководителя спецификации данного JSR. Обычно (но не всегда) они состоят из графического хост-приложения, которое обменивается данными по TCP / IP с тестируемым устройством или виртуальной машиной Java. Тесты обычно выполняются устройством по протоколу HTTP, а результаты аналогичным образом отправляются обратно в хост-приложение. Эта развязка позволяет использовать TCK для тестирования виртуальных машин на таких устройствах, как мобильные телефоны CLDC, которые не имеют возможности запускать полное хост-приложение TCK.
Тесты, содержащиеся в JSR, предположительно являются производными от операторов спецификации JSR. Любой заданный API будет иметь набор тестов, чтобы убедиться, что он ведет себя должным образом, в том числе в условиях ошибки.
Чтобы заявить о соответствии с заданным JSR, реализация Java должна передать связанный TCK. Любые (редкие) исключения должны согласовываться с руководителем спецификаций. Из-за этого TCK имеют большое значение при реализации JSR. Первой важной вехой является запуск TCK, что обязательно включает реализацию Java и базовый сетевой стек, имеющий определенный уровень зрелости. Далее необходимо правильно настроить TCK - поскольку они должны быть достаточно гибкими, чтобы справляться с любой реализацией, существует множество вариантов. (Например, перечисление всех поддерживаемых форматов мультимедиа и связанных дополнительных элементов управления для JSR135 ). Конкретные тесты также требуют некоторых действий по настройке - это имеет тенденцию быть особенно сложным для тестов, которые гарантируют правильное поведение в условиях ошибки, потому что реализация Java должна быть переведена в правильное состояние, чтобы вызывать каждую ошибку. Наконец, каждый неудачный тест должен быть исправлен, что обычно обрабатывается обычными механизмами отслеживания дефектов .
Некоторые разработчики Java считают, что их продукт в основном завершен после прохождения TCK. Хотя это правда, что TCK являются достаточно всеобъемлющими, есть много областей, которые они не охватывают. К ним относятся производительность, а также дополнительные функции. Нет альтернативы, кроме как провести много реальных испытаний для устранения этих недостатков, хотя дополнительные наборы тестов, такие как JDTS, могут помочь.
TCK для платформы Java
Комплект совместимости технологий для конкретной платформы Java называется комплектом совместимости с Java (JCK) . Это обширный набор тестов, используемый Oracle и лицензиатами для обеспечения совместимости реализаций платформы.
Выпущен исходный код JCK для Java 6.0 . [1] [2] Связанная лицензия изначально не позволяла пользователям компилировать или запускать тесты, [3] но право на просмотр кода не связано с проблемами заражения, и разрешены публичные комментарии к исходному коду. [1] Однако, начиная с выпуска OpenJDK , конкретная лицензия позволяет запускать JCK в контексте OpenJDK, то есть для любой реализации GPL, основанной на OpenJDK. [4] [5]
Лицензионное соглашение OpenJDK Community TCK версии 2.0 было опубликовано для спецификации Java SE 7 с декабря 2011 года. [6]
Фреймворк TCK
Инструмент оснастки JavaTest на сегодняшний день является наиболее распространенной средой модульного тестирования, используемой для проверки соответствия реализации. Это универсальная среда тестирования, предназначенная для запуска тестов TCK. Однако в некоторых спецификациях также используются JUnit или TestNG . [7]
Лицензия и противоречие
После того , как Sun выпустила OpenJDK , Sun выпустила специальную лицензию, разрешающую запуск TCK в контексте OpenJDK для любой реализации GPL, основанной на OpenJDK. [8]
Это требование лишает проект Apache Harmony права на использование TCK, совместимого с лицензией Apache . 9 ноября 2010 г. Apache Software Foundation пригрозила выйти из процесса сообщества Java, если им не будет предоставлена лицензия TCK для Harmony без дополнительных ограничений. [9]
9 декабря 2010 г. Apache Software Foundation оставила свое место в исполнительном комитете Java SE / EE. [10]
Смотрите также
Рекомендации
- ^ a b Гамильтон, Грэм (2004-12-13). «Выпущены исходные коды тестирования совместимости J2SE» . Архивировано из оригинала на 2004-12-16 . Проверено 8 марта 2008 .
Мы постарались убедиться, что лицензия соответствует разумным потребностям разработчиков, которые хотят оценить источники JCK: она доступна по нулевой цене через сквозную лицензию; Нет никакого "заражения". После того как вы удалите свою копию JCK, вы не будете ограничены в своих будущих действиях. Чтобы попытаться прояснить это по-настоящему, мы включили раздел, явно предоставляющий то, что юристы называют «остаточными правами», что в основном означает, что вещи, которые застряли в вашей голове, можно использовать в будущем; Вы можете публиковать отзывы и комментарии публично.
- ^ ЕКК проект архивации 8 июля 2007, в Wayback Machine
- ^ " " READ ONLY "ИСТОЧНИК ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ, v1.0 JAVA (TM) СОВМЕСТИМОСТЬ KIT 6а" . Sun Microsystems . Июнь 2007 Архивировано из оригинала на 2010-12-31 . Проверено 8 марта 2008 .
- ^ Дарси, Джозеф (2008-03-06). «Соответствие версий JDK и JCK» . Архивировано из оригинала на 2011-08-12 . Проверено 8 марта 2008 .
Если вас интересует запуск JCK в контексте проектов OpenJDK, доступна лицензия.
- ^ «ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ СООБЩЕСТВА OPENJDK TCK V 1.1» (PDF) . Sun Microsystems . Проверено 8 марта 2008 .
При условии и при условии, что Реализация Лицензиата в значительной степени является производной от Кода OpenJDK, и, если такая Реализация будет или должна быть передана третьей стороне, она распространяется по Лицензии GPL, Sun настоящим предоставляет Лицензиату в пределах Интеллектуальной Права собственности на TCK, всемирную личную, неисключительную, непередаваемую ограниченную лицензию на использование TCK внутри компании и исключительно в целях разработки и тестирования Реализации Лицензиата.
- ^ [1]
- ^ https://java.net/projects/jbatch/sources/jsr-352-git-repository/show
- ^ «ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ СООБЩЕСТВА OPENJDK TCK V 1.1» (PDF) . Sun Microsystems . Проверено 8 марта 2008 .
При условии и при условии, что Реализация Лицензиата в значительной степени является производной от Кода OpenJDK, и, если такая Реализация будет или должна быть передана третьей стороне, она распространяется по Лицензии GPL, Sun настоящим предоставляет Лицензиату в пределах Интеллектуальной Права собственности на TCK, всемирную личную, неисключительную, непередаваемую ограниченную лицензию на использование TCK внутри компании и исключительно в целях разработки и тестирования Реализации Лицензиата.
- ^ Заявление Совета ASF о нашем участии в процессе сообщества Java ,блог Apache Software Foundation , 09.11.2010
- ^ ASF уходит из исполнительного комитета JCP ,блог Apache Software Foundation , 09.12.2010
Внешние ссылки
- Инструменты тестирования совместимости Java
- Ресурсы сообщества JCP - Инструменты TCK