It depends on the platform. On Linux, Solaris, etc. JRE uses dlopen . On Windows, it uses LoadLibraryEx and GetProcAddress . If the JRE runs in interpreted mode, it calls this function; in compiled mode, it compiles Java bytecode into native code that calls this function.
In all the JREs that I'm familiar with, you cannot directly call your own function in a static library; only one in the dynamic library.
Parent code should not be limited to one platform; if it is standard C, you can compile it using a cross-compiler for each platform on which the JRE is available.
david source share