How are you any more tied to old JDK versions on Linux, compared to Microsoft? Also, I'm curious to what requirements you have that makes it OK to upgrade hardware and apply service packs and Java updates, but not to do OS release upgrades on Linux?
There are no supported versions by RedHat other than that which ships with the OS distribution. To get a recent JDK we then have to deal with Oracle as well and the cost goes right up. With the CLR and Microsoft there is one point of call under one contract. Plus no one wants to deal with Oracle.
Hardware isn't upgraded. It's replaced when it fails. It's easier to get hardware off the shelf that is certified for Windows Server (any version!). This is particularly true on the tail end of a product lifecycle.
The OS upgrades in Linux are usually utterly painful (Debian included). If you go with CentOS/RH, you have to do this every 5 years at average due to the API churn in Linux distributions[1]. You need to get your developers on there ASAP. With Service Packs and Java updates, a simple test cycle will suffice as they don't break the API contracts. They promise this and deliver.
[1] The kernel syscall interface is fine but major versions of Apache, glibc and compilers and anything even vaguely related to client-side stuff is a PITA.
I had to upgrade a machine running an old version of Slackware on the 2.0 kernel. Yes, from about 1999 I think.
It was impossible to get that Perl web system running on anything modern without massive pain.
For the wonderful bliss of Linux-land, at least with Windows you know that something written 20 years ago will probably still work.
(Yes, I know - they shouldn't have written it in Perl)
If it had been written in some other scripting language then I'd guess you would have had even more issues upgrading! Because Perl, despite all its supposed warts & bad image, remains highly backward compatible.
NB. The biggest issues I've seen in upgrading are modules that use C libraries (unfortunately things do change over time!).
As an example I'm still running a Perl web system & data munging backend that I wrote back in 2001 with only minor tweaks over the years for new/modern systems.
Exactly. Perl 5 exists since 1994, so it's probably Perl 5 code there which needs probably little to no changes to run even today on the latest 5.x interpreter. I don't understand what were the issues that 72deluxe faced.
I think it was renamed modules between versions? I never got to the bottom of it. In fact, I aborted migrating it and ended up leaving it running, but instead virtualised the machine (that was fun!)
If I had known what I was doing with Perl, it might have been better. I was a bit harsh on Perl, apologies. But it still stands that migration on Linux boxes isn't massively easy or fun (not that Windows is either)