2016-09-03 3 views
0

Возьмем, к примеру, спецификацию сервлета (версия не имеет значения). Он поставляется с большим PDF-файлом, описывающим спецификацию. Его API (интерфейсы и классы) подпадают под структуру пакета javax.servlet.*, и мы, как программисты, используем их. Например, при написании сервлетов мы часто получаем extends javax.servlet.http.HttpServlet.Спецификация Java и ее API (интерфейсы + классы)

Мои вопросы: классы API и интерфейсы (javax.servlet.*), являются ли они «специфичными для поставщика» (реализованы каждым поставщиком контейнера сервлетов) ИЛИ являются частью этого спецификатора (и поэтому используются только каждым поставщиком контейнеров сервлета)?

Или эта спецификация практически всегда поставляется с эталонной реализацией (RI), которая создается членами спецификации и может свободно использоваться (и в некоторых местах - как реализация метода в абстрактных классах - без изменений)?

+0

Поскольку спецификация 'javax.servlet. *' Находится в одном документе, для него не существует возможности для конкретного поставщика. Неужели это очевидно? – EJP

+0

Я отредактировал мой вопрос, добавил часть RI. –

ответ

2

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

Посмотрите на this question.

+0

Спасибо. Вопрос, который вы говорите, связан с моим. У меня такой же вопрос: спецификация упоминает имена пакетов и интерфейсы, которые мы, как программисты, можем использовать, я имею в виду: «Настоящий API с его JavaDoc». Конечно, спецификация не определяет реализацию, а может использоваться в код кодер нуждается в конкретном и полном интерфейсе и именах классов. –

+0

@StephanvanHoof Я думаю, что Jörg W Mittag дает очень сложный ответ. Спецификация - это то, что вы хотите. Вы выбираете, будет ли он очень открытым или очень точным. В Java-land спецификация часто включает имена пакетов/интерфейсов/классов. –

Смежные вопросы