Как реализовать спецификацию JSR

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

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

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

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


person pjesi    schedule 23.04.2009    source источник


Ответы (4)


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

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

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

person Martin OConnor    schedule 23.04.2009
comment
Правильный. Как бы то ни было, TCK не всегда дороги - я больше всего знаком с ситуацией с JSR-173, и, насколько мне известно, TCK для него не так уж и полезен. Скорее, набор тестов с открытым исходным кодом (StaxTest) имеет гораздо более широкий охват, поскольку он находится в свободном доступе. Но это может быть единичный случай. - person StaxMan; 02.05.2009
comment
Тем не менее, строго говоря, передача TCK - единственный официальный способ продемонстрировать, что ваш код соответствует JSR. - person Martin OConnor; 10.05.2009

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

person kgiannakakis    schedule 23.04.2009
comment
Спасибо. Я действительно рассмотрю реализации с открытым исходным кодом более подробно. - person pjesi; 23.04.2009

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

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

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

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

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

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

Удачи!

person michael aubert    schedule 06.06.2009

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

person mP.    schedule 23.04.2009
comment
Реализаций действительно много, но они не подходят для того, что я хочу делать. - person pjesi; 23.04.2009
comment
Что ж, если они не делают то, что вы хотите - возможно, вы выбираете не тот продукт. Если в спецификации говорится, что что-то должно предлагать функции, и разработчики делают это, и вам не нравится ни одна из них, почему вы цените спецификацию? - person mP.; 24.04.2009
comment
это не спецификация. Я просто говорю, что, возможно, ответ так же прост, как если бы вам нужно было поискать где-нибудь еще ... - person mP.; 24.04.2009
comment
Не то, чтобы я знал подробности здесь, но реализация JSR имеет свои преимущества - если вы все равно планируете реализовать это, и spec (API) достаточно хорош (но impl (s) нет), почему бы не использовать его? Это также может значительно способствовать внедрению - нестандартным альтернативам часто приходится объяснять, почему они не поддерживают стандартный API. - person StaxMan; 02.05.2009
comment
Зачем внедрять спецификацию, которая не делает то, что вы хотите? Кажется, это знак, что нужно двигаться дальше и искать что-то другое. - person mP.; 03.05.2009
comment
Реализации зависят от различных вещей, которых у меня нет в моей среде. Например, их обычно требуется установить непосредственно в Tomcat, но у меня есть контроль только над одним веб-приложением. Я пытаюсь встроить Плутон в приложение, но это требует тех же усилий, что и написание новой реализации. - person pjesi; 19.06.2009