Sun JDO standard is much more than an implementation like Castore JDO.
Sun JDO aims to make a very flexible standard to handle persistent objects without sacrifing performance and without to privilege vendor specific features.
JDO published a contract to be persistent. This may be done using bytecode enhancement, source code enhancement, or limiting the class to inherit a class that implements JDO contract (a class that inherit PersistenceCapable).
Castor works with SLOW reflection, dot. Since it doesn't define a "contract" there are no standard way (in Java) to know object attributes without using the reflection !!!
This is only one aspect of superiority of Sun JDO against other custom approach like Castor.
Luca Garulli (Member of Sun JDO Expert Group)