|
From: Jon A. M. (JAM) <cod...@ea...> - 2001-11-28 05:05:17
|
Deane, I checked in the new classloader stuff, and removed the extensions.properties files. I accidentally got the desktop to work again, but there may be url -> xml issues. The new classloader is JNLPClassLoader. It's fairly clean, but I would like to get rid of the getExtensionName and getExtensionHREF methods. I think this would improve the DCF codes too, since they could just get the JNLPFile and use that instead of getting each part seperately. Or the ExtensionName should at least be unnecessary since it loads from a URL directly instead of looking it up in a table. You mentioned that this might be bad because the files might move, but it may be better because the local system could now read 'documents' that were created on other systems that 'knew about' more extensions than the local one, if a network location for the extension was used there. Anyway, it seems to work. It uses a really simple cache instead of hooking into cachemgr (I didnt' know if cachmgr was thread safe and there were enough potential problems to worry about!). I propose a new cache policy, where instead of checking for and downloading new versions immediately, apps are run with the old version in cache and then the new version is downloaded while it is running, and used when the apps is launched at a later time. This should dramatically increase startup time... check out http://www.gentleware.com/download/Poseidon4umlJWS.jnlp for an example (have to turn off security to get it to work); it's got ~25 jars that used to be checked for being up-to-date each time it was run, initial startup going from ~22 seconds (depending on trans-Atlantic congestion) from the cache to ~1 second. Check out CacheUtil in jnlp dir for where hooks into the cache would go. Also I removed the IExtensionLoader interface to the classloader... if code is hard-wired to the jnlp classloader it won't matter if it is using an interface or class. Jam |