To clarify, I was suggesting using JNI to wrap the C++ library, to avoid the need to re-implement everything. You'd then use Unsafe just to implement fast primitive accessors, but things like memory allocation, pointer manipulation, etc. would delegate to the C++ implementation. I think this would be a good way to get things working quickly.
Of course, if you'd rather do more work in order to implement the whole thing in Java, by all means, do it. :)
I agree that Unsafe is preferable to ByteBuffer where available, but we will eventually need a ByteBuffer implementation as well.
-Kenton