2009-04-23 8 views
4

Я рассматриваю возможность внедрения одного или двух API JSR. Я еще не прочитал всю спецификацию (план должен читать их, когда я кодирую реализацию), но я очень им знаком. Я прочитал, что процесс JSR включает в себя внедрение набора тестовой совместимости (TCK) для тестирования упомянутых реализаций JSR.Как реализовать спецификацию JSR

Прежде чем начать писать кучу модульных тестов, чтобы проверить правильность/полноту моей реализации, я бы очень хотел использовать этот TCK, но я понятия не имею, доступен ли он для меня. После загрузки всех файлов и поиска в Google я не смог найти ничего, что можно было бы определить как TCK для данного JSR.

Итак, мой вопрос в основном: какие шаги мне нужно сделать, чтобы создать собственную реализацию спецификации JSR и как я могу убедиться, что я действительно это сделал.

Для чего это стоит, я рассматриваю возможность внедрения JSR-168 и JSR-286, но я думаю, что это не относится к этому вопросу.

ответ

8

Что вам может понадобиться, это связаться со спецификацией для данного JSR. Они могут предоставить вам больше информации о получении TCK.

Возможно, вам необходимо заплатить лицензию, чтобы получить доступ к TCK. Конечно, со спецификацией Java SE, Sun действительно взимает плату за лицензию TCK, если вы не квалифицируетесь как некоммерческая организация, чтобы получить ее бесплатно.

Это, я считаю, варьируется от JSR до JSR, поэтому, как я сказал выше, лучше всего связаться с руководством JSR spec.

+0

Правильно. Для чего это стоит, TCKs не всегда стоит многого - я больше всего знаком с ситуацией с JSR-173, и, насколько мне известно, TCK для него не так уж и полезен. Скорее, набор тестов с открытым исходным кодом (StaxTest) имеет гораздо более обширный охват, будучи свободно доступным. Но это может быть просто отдельный случай. – StaxMan

+1

Тем не менее, передача TCK - это единственный официальный способ продемонстрировать, что ваш код соответствует JSR. –

0

Почему вы хотите реализовать спецификацию, если уже существует рабочая реализация? Кажется, что много ненужной работы для небольшой пользы ...

+0

Есть действительно много реализаций, но они не подходят для того, что я хочу делать. – pjesi

+0

Хорошо, если они не делают то, что вы хотите - возможно, вы выбираете неправильный продукт. Если спецификация говорит, что что-то должно предлагать функции, и разработчики делают это, и вы не любите никого из них, почему вы цените спецификацию? –

+0

* это * нет * * спецификация. Я просто говорю, что, возможно, ответ так прост, что вам нужно искать где-то еще ... –

3

Ничего себе, это очень амбициозный проект, обычно используемый компаниями или командами с открытым исходным кодом. Если вы достаточно решительны для этого, я рекомендую вам взглянуть на некоторые версии с открытым исходным кодом. Указанные JSR реализованы на Pluto. Возможно, стоит взглянуть на исходное распределение.

+0

Спасибо. Я действительно посмотрю на версии с открытым исходным кодом более подробно. – pjesi

2

Извинения в даванге для наихудшего сценария, который я собираюсь представить.

Проделав это довольно много раз, я настоятельно рекомендую не писать одну строку кода, прежде чем вы прочитаете не только спецификацию, но и любой вид электронной почты из группы экспертов JSR.

Спецификации JSR обычно полны двусмысленности и могут быть интерпретированы несколькими различными способами. Пройдя через это очень методично, вы сможете задать соответствующие вопросы экспертной группе достаточно быстро, прежде чем она будет разладаться и станет невосприимчивой, надеюсь.

TCK - это, как правило, набор тестов, которые не гарантируют, что ваша реализация будет работать даже удаленно, а просто говорит, что вы являетесь правовой реализацией спецификаций.

TCK обычно являются слишком дорогостоящими для приобретения отдельного человека.

Обильно, способ реализации JSR будет зависеть от того, какая операционная система и какая виртуальная машина вы нацеливаете. Более приятные JSR обычно являются теми, которые могут быть реализованы в чистой Java.

Удачи вам!