Спецификация действительно просто определяет API, который должна реализовывать любая реализация JAX-RS, например, Джерси.
Этот API включает в себя главным образом интерфейсы (т.е. без реализации) и аннотации, которыми пользователи API могут украшать свои классы, и ожидается, что реализация будет обрабатывать и обрабатывать соответственно.
Как вы правильно заметили, API также определяет некоторые абстрактные или конкретные классы. Это в основном используется в тех местах, где API определяет некоторые структуры данных, которые ожидаются методами интерфейсов. Возможно также, что существует некоторая минимальная логика уровня API, которую применяет спецификация. Они были специально выделены в этот пакет javax.ws.rs.core
.
В вашем случае Response
- это абстрактный класс. В этом конкретном случае настоящей причиной может быть просто то, что до Java 8 вам не разрешали иметь метод static
в интерфейсе. И, как вы можете видеть, в нем много static
служебных методов. Он также предоставляет конкретный метод экземпляра getHeaders()
, который, по мнению проектировщиков, должен всегда быть одинаковым (опять же после Java 8 это мог бы быть default
метод интерфейса).
Существует несколько других классов , которые, вероятно, существуют по тем же причинам, что и классы поддержки для API.