Regarding libjvm.so being unversioned, this is not a problem because the only function it contains is JNI_CreateJavaVM(), which returns a versioned vtable. New functions are added to the end of the vtable, leaving old functions in place for backwards compatibility.