Currently VW (Insync) uses the VW Project's compile time classpath entries as the basis for building the designtime URL Classloader. This means that the class path contains URL's:
Out of which only the
are really required for designtime.That is because the designtime Classloader also delegates to one of the applicable ClassLoaderProvider - (J2EE14 or J2EE15) modules's Classloader. That Classloader in turn delegates to most of the required J2EE library providing modules through module dependency.
This means that all the other stuff:
is unnecessarily in the set of URLs of the Classloader which may slow down class and beaninfo lookups. There may be occasional cases where some complib classes depends on additional jars. Those cases need to be handled specially.
My proposal is simple (may be not so simple). Instead of using the whole compile time class path of the project as the basis for designtime Classloader class path only use:
There is a slight complication due to the use of EJB and Web Services related functionality because in those cases complibs are not used. Instead archive references are used for runtime as well as designtime jar. In fact, IMHO, the addition of designtime jars to the project's compilation classpath is a mistake. That is because the classes from designtime jar become part of the code completion set - which is wrong. There are couple of solutions to this:
Plus a mechanism for the user to explicitly add any additional jars/libs to the designtime classpath in those rare circumstances when the complibs are not self contained. This may involve some UI in the Projert Properties dialog.
I sent a jar with these modifications to Winston. According to him there is a definite improvement.And this is without the optimization of ignoring Woodstock and Braveheart libraries as they are available through the J2SE14ClassLoaderProvider and J2SE14ClassLoaderProvider respectively.