Four LTS Java Versions Get End-of-Support in a Three-Year Window (2029-2032) (infoworld.com) 66
Simon Ritter joined Sun Microsystems in 1996 and spent time working in both Java development and consultancy. He's now written an opinion piece for InfoWorld warning that "Between 2029 and 2032, every currently supported long-term support (LTS) version of Java will reach end-of-support within a single three-year window."
That's Java 17 in 2029, Java 8 in 2030, Java 21 in 2031, and Java 11 in 2032... On paper, this looks like a manageable upgrade cycle. In practice, it creates a collision of timelines that most enterprises have failed to forecast. Organizations attempting to modernize incrementally — moving application by application, version by version — are operating on a model that the calendar has already rendered obsolete... [W]hen every major Java version expires in the same compressed window, sequential planning collapses. By the time this becomes obvious, organizations will be forced into reactive mode, making rushed decisions under extreme pressure.
For organizations planning traditional stepwise upgrades — Java 8 to Java 11 to Java 17 to Java 21 — this convergence elevates a routine maintenance task into a structural crisis. Enterprises with large Java estates will be forced to upgrade multiple applications across multiple versions simultaneously to maintain security compliance and business continuity.
"Parallel modernization requires parallel capacity — something most organizations haven't budgeted for," he points out. "This explains why traditional approaches struggle to scale."
That's Java 17 in 2029, Java 8 in 2030, Java 21 in 2031, and Java 11 in 2032... On paper, this looks like a manageable upgrade cycle. In practice, it creates a collision of timelines that most enterprises have failed to forecast. Organizations attempting to modernize incrementally — moving application by application, version by version — are operating on a model that the calendar has already rendered obsolete... [W]hen every major Java version expires in the same compressed window, sequential planning collapses. By the time this becomes obvious, organizations will be forced into reactive mode, making rushed decisions under extreme pressure.
For organizations planning traditional stepwise upgrades — Java 8 to Java 11 to Java 17 to Java 21 — this convergence elevates a routine maintenance task into a structural crisis. Enterprises with large Java estates will be forced to upgrade multiple applications across multiple versions simultaneously to maintain security compliance and business continuity.
"Parallel modernization requires parallel capacity — something most organizations haven't budgeted for," he points out. "This explains why traditional approaches struggle to scale."
I'm wetting my pants now (Score:3, Insightful)
Re: (Score:2)
You'll be pleased to know then that the only remaining LTS option, Java 25, will itself be exiting extended support in 2033 and there's nothing in the roadmap yet to replace it.
Java 29 (September 2027) is on the roadmap as the next LTS after Java 25: https://ops.java/releases/ [ops.java]
Re: (Score:2)
Moving off a platform that auto-expires constantly in order to force you to migrate to a newer ($$$) platform that will also auto-expire shortly after you move to it does seem to be a good idea.
For reference, we recently declared VC++ 6.0, from 1998, unsupported, not because there's a problem with it but because getting it to run under the latest Win11 is too hard. Having said that, binaries built using VC++ 6.0 still run fine under the latest Win11, and that's a nearly 30-year-old dev.system which, admit
Re: (Score:1)
Re: (Score:2)
Java 8 (cost: $0) will continue to work forever, so long as you keep running it on the same OS and hardware. It just won't be patched to support new features, new OS versions, or to fix security flaws. It's just like Windows 95 is no longer supported. This really isn't hard to understand.
Re: (Score:1)
Re: (Score:2)
Re: (Score:1)
Re:I'm wetting my pants now (Score:5, Insightful)
Money. It costs money to hire a developer, understand what needs to be done, etc. Many of these projects probably haven't had a developer look at them in 10 years. Also, inevitably a developer assigned to upgrade such a project will say "we need to upgrade library X, Y, Z"... adding to the costs and the risks of regression.
Maybe there are security risks, but many of these programs are also on private networks, reducing (not eliminating, of course) the potential for exploitation. You don't fix what isn't broken.
Re: I'm wetting my pants now (Score:1)
Re: (Score:2)
It's not just your company, I've come across it many places. Why are so many enterprises still on Java 8? Those same companies were on Java 5 for like 25 years before they "upgraded" to Java 8. 100% guaranteed they will "upgrade" to 17 instead of whatever version is current. You realize there are people who weren't born when Java 8 came out in like what 2012 or something? Jesus Christ. (Note, Christ himself may have still been around.)
Re: (Score:2)
Re: (Score:1)
No one upgrades from a low number to a mid range number.
Som guy above kind of suggested that, too.
You upgrade to the current number, or one below.
First you simply install the new Java, and start the old program.
Then you figure, you have to write a module definition file, because the idiots could not resist to introduce modules into Java in a way that breaks all old code.
And then, you decide if it is worth it to port it by: fixing all the damn problems the new version gives you.
In general: it is not worth it
Re: I'm wetting my pants now (Score:2)
I have no idea why this Java "version" thing is even an issue on the internet. No one talks about C++ or C# issues, because there are none.
Uh what? https://learn.microsoft.com/en... [microsoft.com] and Microsoft has also moved it to short support windows. It's not a Java or Microsoft thing it's an industry thing that Microsoft is a big proponent of.
The MSVCRT absolutely is versioned too with its own issues, but now we're talking about the old school MS compatibility which has always been an outlier. It's not nothing, and anyone casually expecting that same treatment elsewhere is an idiot and taking what Microsoft pulled off for granted.
You're talking about Ja
Re: (Score:1)
Java works on all platforms in general: the same.
So does: Python, C# and what ever.
There is no damn need to upgrade or change anything if for some braindead reason someone decides to change the Linux distro.
That is the farking point of: "Write once, run anywhere",
Re: (Score:2)
C++ broke bigly going from 16- to 32-bit Windows, and again going from 32-bit to 64-bit Windows. And a lot of code that people had written broke bigly, too. But it was possible to write code in a very careful way to not break across these changes, which most people only figured out after the fact.
As for C#, it used to break every single application with every single
Re: (Score:1)
Almost all Java 1.0 code written in '95, on the other hand, still runs fine today on Java 27 or whatever the latest version is.
That is my experience, too.
But why did you need to recompile 16/32 bit apps on windows?
Re: I'm wetting my pants now (Score:2)
This just seems so short-sighted. You spend a bunch of money familiarising with the code knowing that youâ(TM)ll be forced to do it again after youâ(TM)ve forgotten it. This is an opportunity to eliminate an unnecessary upgrade step. Each step of course will risk new and different regressions. Never mind that people donâ(TM)t find working on old code and tooling very motivational.
Iâ(TM)m not so au fait with the Java world anymore, but in C++ land, there are some serious benefits from
Re: (Score:1)
Re: (Score:1)
We are still on Java8 with our entreprise software
That's not necessarily a problem. Java 8 is still a supported LTS version for most Java distributions. For Azul Zulu for instance, support for Java 17 ends earlier (September 2029) than for Java 8 (December 2030): https://www.azul.com/products/... [azul.com] Just move away from Java 8 in time. When 'in time' is depends on the complexity of your use case.
Upgrading multiple Java versions at once is easy (Score:1)
Re:Upgrading multiple Java versions at once is eas (Score:5, Informative)
Not true anymore, this was very through from java 1 to java 8 although.
and most existing Java 8 code would continue to work unchanged in Java 25.
No, you will almost need refactoring in 95% of cases. I spent quite a bit of time on that.
Sun stopped supporting and providing the javax.* packages and they've been replaced by the jakarta.* packages. Java finally started to remove deprecated packages, classes and methods after java 8 so refactoring is not only a matter of renaming the imports. You will also need to upgrade most of the external libraries you use for that reason and they have their own specific changes too.
Re:Upgrading multiple Java versions at once is eas (Score:4, Insightful)
Those javax -> jakarta packages were not part of the JRE. However, those common interfaces are extremely popular. So you probably use a framework or library which uses them and has transitioned to the newer packages. But you could still use the old frameworks or libraries in a newer JRE, assuming they do not use a library that messes with JVM bytecode (which is commonly used to create more advanced class proxies). Javaassist, OW2 ASM, and the likes are the problematic parts for moving on to a newer JRE. These libraries are used a lot. In most cases you cannot simply drop in a new bytecode manipulating library. That's where you run into the part where you have to move your software to newer frameworks and libraries which then also mean you need to change some of your code to go to the jakarta packages. And then you need to hope your software didn't abused some undocumented behavior/features, or internals, of those frameworks.
Yes, there is a high probability that your (enterprise) software will need code changes in order to run on newer JREs.
Re: (Score:2)
Those javax -> jakarta packages were not part of the JRE. However, those common interfaces are extremely popular.
True but running anything with an http interface will almost always use the javax.http.servlet package for example.
Just for fun, here is a challenge, find me a java 8 enterprise application which doesn't use at least one of these package:
javax.accessibility
Defines a contract between user-interface components and an assistive technology that provides access to those components.
javax.activation
javax.activity
Contains Activity service related exceptions thrown by the ORB machinery during unmarshalling.
javax.ann
Re: (Score:1)
find me a java 8 enterprise application which doesn't use at least one of these package:
Easy.
What about your first entry:
javax.accessibility
Defines a contract between user-interface components and an assistive technology that provides access to those components.
Why would that be used in an enterprise app?
Did not check your other examples, as your question is not really making sense to me, Okay: 10 seconds ...
What about the "sounds" package? I never used it. Enterprise or not.
XML? You are aware that you onl
Re: (Score:2)
Re: (Score:1)
An enterprise app has nothing to do with
How your fat fingers are unable to interact with a laptop or why your eyes can not see the text on your screen, or why hitting shift 5 times opens a screen reader and so on
Perhaps you do not know what an "enterprise app" is?
Hint: it is software were no normal user is interacting with.
Re: (Score:2)
It would shock and astound Oracle, who publishes "enterprise apps" like their Enterprise Business Suite (hey look, it even says "enterprise" right there in the title, and is only marketed to large enterprise!) that they don't write and maintain frontend apps in Java. Oh, look, they're the publishers of Java too, so they just might know a thing or two about it.
It would similarly shock and astound the collected finance and purchasing organizations across the Fortune 500 that live in Oracle EBS all damn day m
Re: (Score:1)
I think the arrogance and idiocy is you.
None of those softwares uses javax.accessibility
It would not serve any purpose.
Because your fat fingers only touch your screen, and not the "enterprise software" running on the backend
The backend does not know anything about your screen, your mouse or your keyboard.
Re: (Score:2)
What about your first entry:
javax.accessibility
Defines a contract between user-interface components and an assistive technology that provides access to those components.
Why would that be used in an enterprise app?
So you've never heard of the Americans with Disabilities Act, or the common practice of large enterprises wanting to conform to relevant federal and state laws where they do business that has to do with accommodating disabled workers and not discriminating against workers with protected disabilities?
Or are you yet again opining on shit you have no context of?
Re: (Score:1)
Disabilities are irrelevant for enterprise apps.
As no disabled person is interacting with the enterprise app.
The app is behind a user interface ... which has to cover disabilities.
Stupid idiots on the internet. Mentally disabled?
What the fark does my back end server have to do with noticing you can not read your computer screen
Nothing.
javax.accessibility
And other APIs are for desktop applications or tablet/phone where the DISABLED person needs HELP to interact with that SOFTWARE. The farking server behind y
Re: (Score:1)
Javax was/is part of the JRE, for example all of Swing, the old Java GUI library is in javax.
Capitalism in action (Score:3, Insightful)
Re: (Score:1)
No idea why this got modded troll.
You are completely right.
There are plenty of organizations that are still on Java 8.
Customer facing software is behind a layer of HTML, and back ends that communicate with the outside are behind firewalls.
There is no farking way that an outside can exploit a vulnerability based on knowing the Java version.
And upgrading to another version only trades known (and fixed?) vulnerabilities to unknown and unfixed ones.
What is the benefit of upgrading to a newer Java version if the
Re: Capitalism in action (Score:2)
What is the benefit of upgrading to a newer Java version if the old system does not use any of the newer language features? Oooops, none of course.
Does anyone upgrade to a newer C++ compiler and recompile the running system and redeploys it? I don't think so.
I think you're thinking of C++ from a Microsoft POV I can tell from your other post, and that is an extreme outlier. A redistributable C++ runtime that ships alongside your app, can be updated independently, has a long support life, and mostly decoupled from the OS release lifetime. So for a Windows C++ app you have a different story.
For C++ software on Linux (since we're talking about Java), your question is silly. No there is no benefit to you whatsoever but you're going to rebuild your software for RedHa
Re: (Score:2)
Re: (Score:1)
So we agree, that upgrading to a higher Java version - for no reason - does not make any sense, or not?
Prioritize things (Score:2)
I'd prioritize updating Java 8 applications to Java 11 first. Those are going to be the hardest to bring up-to-date with Java 25 (latest LTS), bringing them up to Java 11 buys the most time. Then upgrade to Java 25 starting with Java 17 applications, then Java 21, then Java 11.
Remember that Java 25 will end support in 2033, so plan on starting your upgrade from Java 25 to the next LTS version basically as soon as your last upgrades to Java 25 are done.
Re: (Score:2)
Re: (Score:2)
The language part, true. The problem is dependencies. Any time you upgrade, especially if you're jumping a large number of versions, you're going to have packages your code uses needing upgrades too. Those package upgrades will usually require code changes to accommodate. Some of those changes will require refactoring to handle structural changes needed for things to work right. That is usually where you end up down a rabbit-hole.
Re: (Score:2)
Why (Score:3)
Re: (Score:2)
We don't. We use OpenJDK. Oracle Java is based on OpenJDK also.
Re: (Score:1)
Because one way or the other, Oracle is always involved.
Not sure why big organizations use it instead of heaving a small department which curates their own version.
So you really think (Score:3)
We still have code running on Java 6!
Better to EOL (Score:2)
Cost comparison? (Score:2)
Go back to COBOL (Score:4)
Re:Go back to COBOL (Score:5, Informative)
See https://www.iso.org/standard/7... [iso.org] And for the history of COBOL language standardization, see the table here https://en.wikipedia.org/wiki/... [wikipedia.org]
Programming languages managed buy ISO committees change slowly. That's a FEATURE. I worked a bit on the Ada standard. Each proposed change was carefully weighed for its impact on existing code, as well as the value for new code. The standard was updated roughly every 10 years.
Re: (Score:2)
Re: (Score:2)
Boeing and Airbus? I'm OK with that.
Re: (Score:2)
But is it webscale?
Re: Using java is its own reward (Score:2)
We don't pay for it. That was the deal with open sourcing it, no more long horizon support windows for security backports. Just like anything else open source, the more popular it is, the more it changes, and you either keep up or you stop getting security patches.
Modern browsers went nuts ... (Score:2)
... so some hardware stuff that needs Java now I've got working with honest Windows 7 Internet Explorer in a VM. Even better, it works with Windows 98 !!! And of course it's blazing fast, and it takes under 100 MBs in total.
What a strange cycle (Score:2)
What company in their right mind would rely on a vendor that end of life's v8 LTS a year after v17 LTS?
Just use OpenJDK.
Re: (Score:2)
Supported by Enterprise Linux vendors? (Score:2)
Wouldn't the OpenJDK versions of these be supported by enterprise Linux vendors, like Red Hat [redhat.com] or SUSE?
Granted, I don't see the "ELS-1" (extended life support) for the newest ones, but I'm unaware of whether that is because it hasn't been set yet or because there won't be any - unlike the previous OpenJDK versions.
I have had to write upgrade manuals (Score:2)
multiple times. A database management utility needs to be installed on junior admin's machine, each time team staff rolls over.The app needs a recent JRE. Same for overseas end user who needs it for an integration. They either don't have Java at all or have an older version, invariably. Even people who should be responsible don't know how to upgrade Java, and maybe they have to go through a bureaucracy to do so. It is messy.
Mehh... (Score:2)
we're still on Java 11 anyway