Given a bunch of URL's, they may have a colliding hashcode just because they resolve to the same IP address. For example because they are all cloudflare websites that resolve to the same cloudflare endpoint.
I'd suggest you assess first the amount of code that depends on java.net.URL both in Java SE itself and then in the ecosystem, before you can say it would be "easy" to remove java.net.URL.
Hint: same reasons java.util.Date, and java.util.Vector are still there.
Yeah, my team of experienced devs were all surprised by this. To the source they went, and found it was true. Not that we'd generally end up hashing a URL, but still.
12 comments
[ 0.15 ms ] story [ 46.9 ms ] threadI got this from an earlier HN post. Apparently it’s a relic of old Java and they can’t change it for some compatibility reason (?)
In this case, I do see it probably moving to behind some configuration flag at some point.
Given a bunch of URL's, they may have a colliding hashcode just because they resolve to the same IP address. For example because they are all cloudflare websites that resolve to the same cloudflare endpoint.
https://github.com/AndroidSDKSources/android-sdk-sources-for...
java.net.URL was introduced in Java 1.0, the very first public release of Java back in 1996.
In 2001, Java 1.4 included a new class java.net.URI that addressed this and other improvements.
Since then, it is well known by average experienced Java developers to a) read javadocs, b) not use URL class, and c) use URI.
It's been 19 years this problem has been fixed.
As to why not remove it, I'd suggest to dig through the OpenJDK mailing list.
[1] https://news.ycombinator.com/item?id=21765788
Hint: same reasons java.util.Date, and java.util.Vector are still there.
P.S. not trying to flame here.
so im looking here https://docs.oracle.com/en/java/javase/17/docs/api/java.base... and I couldnt see any place where it is specifically recommended to NOT use java.net.url and instead use java.net.URI
thinking from the perspective of someone new to Java.
Also when i search for "java url class" on Google...i only see java.net.url