I have been browsing the JDK1.2b4 docs, and noticed some changes in JNI which I didn't see before. Here is the one I'm especially bothered by, quoted from the Library and Version Management section of the JNI Enhancements in JDK 1.2 document: "The same JNI native library cannot be loaded into more than one class loader. Doing so causes UnsatisfiedLinkError to be thrown." Guys, what this means is: Sun has realized their mistake with native libs and the caching issue. They are not fixing it, they are just living with it. They are not going to bother providing support for multiple ClassLoaders in native code. By extension, we can probably infer that they will never ever support native libs in multiple VMs. This change alone has nullified much of our discussion of caching references. I suspect that soon enough the invocation interface's docs will change to reflect that multiple VMs are not supported; they really cannot be, given the optimizations they suggest people do. Now, as for what this means for Japhar and Classpath: we can still aim for a version that does multiple VMs per process, but I think we must aim for it as a *special version* of Japhar, some compile switch that turns on multiple VM support and the extra code it entails for caching things. The general Japhar will have to handle everyone's JNI code, and with Sun's suggested caching optimization I don't believe multi-VM Japhar would be able to handle it. --John Keiser
