According to odejava’s javadocs, you’re supposed to use JavaCollision. I believe the difference is that NativeCollision is all native, PureJavaCollision is all java, and JavaCollision is a hybrid that uses NIO buffers. I’ve used the JavaCollision and I’ve found it fairly easy to use. Just look at the source code for the various tests included with odejava and it should be obvious (if you haven’t already figured out how to use them).
I think you would use PureJavaCollision if you want java implemented callbacks. JavaCollision only lets you iterate through the contacts and set the parameters I believe. However according to the docs, PureJavaCollision isn’t fully implemented or tested.
NativeCollision performs the collision detections fully on the native side without providing any information back to java and the contacts are unmodifiable.
I’ve only ever used JavaCollision, but when you use JavaCollision.collide(Space space), it collides all of the geometries within that space, I’m not sure how to explicitly collide just 2 geoms or between spaces (I’ve tried using the low-level methods and it didn’t end well since the SWIG objects are hard to manipulate and use).
You have to pass in a world object (I think the swig stuff requires an id handle from it), but you don’t need to do the simulation. Just don’t call a stepper function and only call Collision.collide(…).
Hope that answers your questions.