Hibernate X JPA

Lendo a documentação da Sun eu havia entendido que a JPA havia sido criada para substituir outras APIs de persistências, como o Hibernate, fala inclusive que a JPA pegou o que tem de melhor do Hibernate e outras APIs. Achei que conseguiria utilizar somente a JPA.

Porém, estou apanhando muito para fazê-la funcionar até me falaram que não tem como usar a JPA somente, é preciso usar uma implementação da JPA e que o Hibernate é uma delas.

Eu estou com muita dificuldade de entender esta relação entre JPA e Hibernate. No tutorial da Sun sobre JPA não fala nada disso. Alguém poderia me explicar ou indicar um site ou artigo que possa me esclarecer estas dúvidas estruturais?

JPA (Java Persistence API) é um especificação e precisa de um framework como Hibernate ou TopLink, eles criaram a especificação para padronizar a camada de persistencia.
Pegaram o que tem de bom entre os frameworks e criaram a especificação.

Tem uns livros bacanas

http://www.temporeal.com.br/produtos.php?id=170695

http://www.temporeal.com.br/produtos.php?id=170807

http://www.temporeal.com.br/produtos.php?id=171506