On 10/11/2024 07:05, Peter Firmstone wrote:
So we have an RFC3986 compliant URI implementation, that's not compatible with Java's RFC2396 URI and now we use deprecated URL public constructors...

But I guess they're only deprecated, not going to be removed, we can't change our code to use RFC2396 URI without unintended consequences...   Having said that, I would discourage developers from writing any new code that uses RFC2396 URI.

My understanding is Java's RFC2396 cannot be changed for backward compatibility reasons, it's not strictly compliant with RFC2396 and varies from the spec with a larger allowed character set (unescaped)...

Perhaps a new RFC3986 URI implementation could utilise a provider mechanism, with some static methods that allow the developer to select which RFC compliant URI version they want to use?

We haven't used Java's URI class for a long time, as there are significant performance benefits to using RFC3986 et al, such as not relying on DNS lookup for identity.

It's probably best to bring discussion about RFC 2396 vs. 3986 to net-dev as that is where both java.net.URI and legacy java.net.URL are maintained. Also make sure to clearly distinguish the two APIs in any discussion as it might confuse lurkers to bring up DNS lookup in the context of parsing input as a URI. As regards efforts to move to the newer RFC then I think you know the previous effort to upgrade to the newer RFC had to be backed out (before the release GA) due to compatibility issues. There have been efforts since then, including prototyping several API directions. I can't tell if you are asking about that or specifically the legacy URL constructors that have been deprecated for several releases, so maybe make that clearer in your mail to net-dev too.

-Alan

Reply via email to