Hacker Read top | best | new | newcomments | leaders | about | bookmarklet login

It won't be longer true in Java 9, latest Java 10.


sort by: page size:

True until Java 7, not so with all the newer bytecodes.

That's basically what Java said in 1995.

There is a reason why Java completely abandoned that position.


Not quite. While Java 10 is end-of-life because it isn't an LTS version, Java 8 still is actively supported.

Hopefully their need will go away in Java 10.

Is it though? Why did they rewrite it completely for Java 9 and up, if it's just 'for legacy stuff'?

I don't know what you mean - if that's the case why didn't they realise that in like 2015, 2016, when these Java 9 features were added? And why haven't they been able to fix them since then?

I know about development realities, but seriously come on at some point?


This is mostly due to Java 9 breaking everything.

Post Java 11, I doubt you will see the same problems you did with going from 8 to 9 or 11


Seems to be at least until Java8

be carful with adopting java9 and java10. they won't live that long...

8 -> 9+ is an entirely different story, because not only was 9 the last (ever) major release, but it was a particularly big one.

> If your code ran on a given Java 7 release, it would work unchanged on all later Java 7 releases; the same for Java 8. The same pattern still applies for later Java versions; if your code ran on a given Java 9 release, it should work unchanged on all later Java 9 releases, but not necessarily on Java 10 or Java 11 (this is not a theoretical concern, I've seen it happen in practice).

But the situation now is even better. If your code works on 9, it will work with no or very few changes on 10 and if it works on 14 it will work with no or very few changes on 15, but while there might be slightly more work between 14 and 15 than between 8u20 and 8u40, in exchange you never have another major upgrade again. So the work is just spread differently, and in a way that makes it less costly overall, true, once you've got used to it.

But there's one more difference to those who do remember how things were: It is true that in the Java 6-7 era there weren't as many breaking changes, but that was mostly because Sun was dying and Java barely changing. With Oracle's growing investment, change is picking up, and the new release model makes it easier to cope with, not harder, as those who'll skip too many feature releases are sure to find out.

> You not only have to upgrade your code (and hope your QA and unit tests caught all relevant cases) for the new Java version, but you also have to upgrade all your dependencies,

I'd say that such a policy is based on folklore and/or luck rather than actual long-term experience. You have to do that for every patch release, too (although "upgrading your code" is not something that's very common in Java; most JDK 1.4 code still runs unchanged, and the required changes are mostly on the command line, not in the code). It is not the small spec changes that are most likely to break your code in complex ways, but internal changes that occur even in patches. The change that required the most code changes since 9 has been this one [1], in 11.0.2/8u202 -- i.e. a patch release, not a feature release.

The one area where there is more need to update dependencies on feature releases than patch releases is in bytecode parsing/manipulating libraries, some of which for some historical reason (a bad ASM accident about 8 years ago) still insist on shadowing ASM into their JARs. As a consumer of such libraries, you should advise them to stop.

[1]: https://pangin.pro/posts/computation-in-static-initializer


>the last one of which was Java 11, 3 years ago.

Extended support still behind Java 8 =)

I suspect Java 8 will be with us for a long long time.


yeah java9/10/11 stuff is probably a little bit late.

It is still completely irrelevant to Java's evolution since Java 7.

Java 8 is supported until 2023.

Funny enough, Java 11 will be end of life the following year. It's not even worth migrating to, better jump to java 15 then.

https://access.redhat.com/articles/1299013


Which version? Aren't we on Java 9 now?

"Java 9 is obsolete [...]. What? You haven't upgraded yet? Well, Java 10 is only going to last six months before it is obsolete too."

http://blog.joda.org/2018/02/java-9-has-six-weeks-to-live.ht...


Java/JVM have breaking changes from Java 9 onwards, and now deprecated stuff is actually removed, not left around until the end of universe.

> It could reasonably be years before many shops transition to Java 9

Java 9 is short term support release, ending support with the release of Java 10 / Java 18.3 (March 2018). Next LTS JVM release is supposed to be 11 in 1.5 - 2 down the road.

A lof to large organizations will be holding back for the next LTS release before considering migration.


I'd think Java 10 will be around mid 2020 or later.
next

Legal | privacy