Java module managers (or even just class loaders) enforce similar restrictions on native libraries (i.e., loading of dynamic shared objects).
The bigger question in this context is whether the run-time dynamic linker should try support this usage scenario, loading different versions of the same shared object into the same process. There already is dlmopen
, but it may not be sufficiently sophisticated, and glibc's current implementation is rather buggy and only there to supported its implementation of audit modules.