Organization and symbol lookup for shared libraries
Bryce McKinlay
mckinlay@redhat.com
Wed Nov 10 17:13:00 GMT 2004
Per Bothner wrote:
> Bryce McKinlay wrote:
>>> Its also important to remember that all of this only happens if an
>> attempt is made to resolve a class that wasn't explicitly linked.
>> "hello world", nor any app that only uses libgcj or other libraries
>> that are explicitly linked with "-l", will not incur any of this
>> overhead.
>>> Also, if at compile-time we reference class T using L.jar, at run-time
> we ahould only look in L.so.
I can see how this behaviour would be an advantage in some situations,
but I'm not sure how well it would work in practice. Some issues to
consider:
1. This forces .so names at runtime to match .jar names at compile time.
That might not always be true, for example, .jar file names often
reflect version numbers - you might want to use a newer version of the
.so at runtime without recompiling the application.
2. How does the compiler express (to the runtime) that T should only be
loaded from L.so?
3. What if T isn't compiled? Classpath behaviour would potentially be
different depending on whether a bytecode or native version were run.
I guess all of these have possible work-arounds, but I wonder if the
benefits are worth the potential hassles...
Regards
Bryce
More information about the Java
mailing list