Spin of from 7118421.
Basic operations to compare URLs are not implemented efficiently as
a) they may still end up in DNS lookups
b) use case sensitive comparison when it is not needed
c) compare parts that often the same first (e.g. protocols)
JarDesc is often used in lists and maps but its equals/hashcode perform a lot of computations.
DeployClassLoader relies on ArrayList.contains() but this will use URL.equals() and result in DNS calls.
All this is results in slow down, especially if some DNS is slow of URLs are not valid.
(e.g. when launch from cache and being offline or behind firewall)