JPA defines an interface to persist normal Java objects (or POJO's in some peoples terminology) to a datastore. JPA is tightly coupled to RDBMS datastores and so is currently of no use when you require an alternative type of datastore (such as XML, OODBMS, etc). JPA is a standard approved in June 2006 as part of "EJB3" though can be used outside of the J2EE container. A later version (JPA2) was approved in December 2009. JPA defines the interface that an implementation has to implement. The whole point of having a standard interface is that users can, in principle, swap between implementations of JPA without changing their code.
JPA has the following principal areas.
This release of DataNucleus AccessPlatform requires JPA2. There is currently no official version however there is an Apache 2 licensed version from Geronimo that included with AccessPlatform
DataNucleus makes no use of the JPA2 TCK. This is because we have been prevented access to it by Oracle and the JCP, which is now nothing more than a charade. We do however use the JPA1 TCK to check compatibility of every release.