Remix.run Logo
samus 3 days ago

Not comparable; Python 3 changed the source language. While for most programs complying with standard Java nothing had to be changed at all.

pjmlp 3 days ago | parent [-]

Yes it was, your Java 8 code won't compile in Java 9, if using anything that was removed or blocked due to the modules changes, library and runtime are part of the language.

A programming language isn't only grammar and semantics.

samus 2 days ago | parent [-]

The affected APIs were from packages where is is easy to tell from the name that they were not part of the standard.

These can be very useful in certain circumstances, but it should have always been clear that there is a risk they could one day be changed in an incompatible way or removed.

pjmlp 2 days ago | parent [-]

Does not change the fact that existing code, or existing JARs could not run any longer, and had to be rewriten.

When code breaks, the user doesn't care about the details of the root cause, it stays broken.

samus 2 days ago | parent [-]

That code was never compatible with standard Java to begin with, therefore nobody should have been surprised. It would have never run on a JVM that didn't bother to implement the same internal APIs.

Crucially, if the OpenJDK project had removed or changed these internal APIs the result would have been all the same. But it's simply unreasonable to expect Oracle to also maintain backwards compatibility there.