Чем спецификация отличается от API?
=====================================

 Разбираюсь с Hibernate. Выяснилось, что JPA - это спецификация, а Hibernate - реализующий её ORM, причём Hibernate может работать и через собственное API, а не только через API JPA.  

  

Чем спецификация отличается от обычных интерфейсов / API? Ведь в спецификации, насколько я понимаю, так же декларируется то, что должно быть реализовано, как и в контракте интерфейса. 

 В данном случае отличается тем, что это **стандартная** спецификация. Разработчик Hibernate может как угодно и когда угодно поменять своё API, но JPA меняется только в процессе многолетнего согласования примерно полусотни крупных компаний. 

 JPA - Java Persistence API  

Ваш вопрос: чем API отличается от API.  

Ответ - ничем.