Investigation into traces of J2SE startup time has shown that parsing
of jar file manifests consumes a significant portion of startup time
for both non-GUI and GUI applications. Manifests are currently parsed
by the core libraries for two reasons. The first is done by the
URLClassPath to check to see whether a class-path attribute is present
and whether dependent jars may need to be opened. The second is done
by the JarFile implementation during construction of a JarVerifier;
jars are verified by default so JarVerifiers are always constructed.
None of the jars shipped by Sun in jre/lib/ext contain class-path
attributes, so for most Java installations manifests do not need to be
parsed for this reason. JarVerifiers are used to verify signed jar
files and have no effect for unsigned jars. None of the core jars Sun
ships in jre/lib/ext which are loaded during startup of simple
applications are signed, so we can plausibly avoid JarVerifier
construction for these jars.