Diferença entre JPA e hibernate?

Pessoa, desde que fiz funcionar uma persistencia com JPA bateu a dúvida: Qual a diferença de JPA para hibernate?

Afinal, JPA não é apenas uma especificação? O Java implementou esta especificação e também chamou de JPA?

Qual a diferença entre ambos? E se há diferença, pq usa-los em conjunto?

Obrigado!

Dá uma olhada em outro tópico do GUJ sobre este assunto: JPA Como, porque, quando??