TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Are .NET 4.x and JDK 8.x the "zombie" runtimes of enterprise software?

68 点作者 pyeri大约 1 个月前
I&#x27;ve noticed a strong parallel between Microsoft&#x27;s .NET Framework 4.x and Oracle&#x27;s JDK 8.x series. Even though newer versions keep rolling out — .NET Core, .NET 6&#x2F;7&#x2F;8, JDK 11&#x2F;17&#x2F;21 — these older versions just won’t die.<p>A few reasons:<p>- Heavy enterprise usage, especially in midcaps and MSMEs.<p>- Industry inertia — teams hesitate to rewrite working systems without a compelling business reason.<p>- In some cases, older stacks are more stable and “battle-tested”, especially for use cases like WinForms or thick-client apps.<p>It&#x27;s kind of ironic that even today, the default .NET version baked into fresh Windows installs is 4.6 (or nearby), not the shiny new .NET 8&#x2F;9. Meanwhile, Oracle still offers JDK 8 — albeit behind a paid support wall — much like Microsoft continues to patch .NET 4.x via Windows Update.<p>Eventually, these older branches will be sunset. But given their stability and widespread industrial use, I feel like that day might be decades away rather than years.<p>Curious to hear — how do you see this transition unfolding? And are there any good examples where teams actually migrated away from 4.x or 8.x successfully?

36 条评论

eterm大约 1 个月前
Porting .NET framework to .NET core &#x2F; standard &#x2F; 6+ really isn&#x27;t as smooth as MS would like you to believe.<p>And the support lifecycle for .NET4.8 is ironically better than they are for .NET 6 (already dead) and .NET 8, because of the shipping-with-windows thing.<p>The odd-numbered .NET releases aren&#x27;t even worth looking at from an enterprise perspective.<p>So yeah, there&#x27;ll be a bunch of .net framework code around for a while.<p>That said, it&#x27;s frustrating, because in some places the performance just isn&#x27;t there, and there are so many nuanced differences between them there&#x27;s a weird effect trying to switch between them.<p>You not only have to recall which APIs are available in each, but the performance differences between otherwise identical (or near identical) APIs.
评论 #43643258 未加载
评论 #43643252 未加载
评论 #43645480 未加载
评论 #43643395 未加载
评论 #43660218 未加载
joseda-hg大约 1 个月前
I&#x27;ve been given an old .NET Framework project, at least with .NET you can target .NET Standard 2.0, and that way additions can be done on top of the modern(ish) ecosystem, for progressive rewriting<p>At least MS won&#x27;t kill .NET Framework until they&#x27;ve fully transitioned Desktop Office, Visual Studio and Sharepoint, so we at least have a couple decades ahead (Much to my chagrin)<p>Sidenote: Whoever is in charge of Microsoft naming schemes deserves to be taken behind the barn and shot, they can&#x27;t keep getting away with this
评论 #43643274 未加载
评论 #43643199 未加载
smileybarry大约 1 个月前
We have a(n enterprise) product that uses .NET 4.x for the UI, and I&#x27;ve explored moving to current .NET, however:<p>* Supporting some older OSes and requiring less system base updates is key<p>* There&#x27;s a priority to keep installation size (relatively) small<p>* There&#x27;s a (higher-up) notion of &quot;if it works, why change it&quot;<p>On top of that, some technical issues I&#x27;ve encountered (since resolved) and gave up on upgrading were:<p>* Up until relatively recently there was no &quot;single executable&quot; deployment<p>* For some part of Core&#x27;s lifetime you had this weird deployment of DLL-run-by-EXE that&#x27;s a dealbreaker for the software&#x27;s security boundaries &amp; requirements<p>* <i>Huge</i> executable size, until recently where trimming unused framework code was added<p>There was also some period of time where the .NET party line was &quot;WPF is legacy, we don&#x27;t support it on modern .NET&quot; and our UI is already built in WPF. We couldn&#x27;t move to something like WinUI due to supporting Windows &lt;10 and even then, WinUI 3 increases your deployment executable&#x27;s size by a <i>lot</i>. Thankfully they added WPF support in .NET 8&#x2F;9.
alkonaut大约 1 个月前
The .NET 4.X runtimes baked into Win10&#x2F;11 are OS components just like Win32 is an OS Component.<p>That&#x27;s first of all brilliant if you want to ship apps that run on those systems, because you don&#x27;t need to ship the runtime. But it&#x27;s painful when you want to write <i>server</i> software. Because you don&#x27;t want your deployment story to be dependent on the server having some particular system level software (or it being windows). So it&#x27;s completely inevitable that 4.X will never die. Win32 won&#x27;t die either.<p>And making the ship to a completely separate runtime that runs on Linux, and isn&#x27;t an OS component (but in return requires deployment) was just natural. It&#x27;s not completely unthinkable that the .NET Runtime will be shipped as part of Windows, but even that woulnd&#x27;t mean that they can <i>stop</i> shipping the .NET Framework 4.X runtmes.<p>I just ported a 20 year old 200+ man year desktop app from 4.8 to 8.0 and it was pretty smooth. Even things like old binary-only proprietary winforms controls actually work, which was a huge surprise.<p>If you are making a web app or any kind of server side app, then the migration is usually straightforward. For client side software it&#x27;s not as easy, and in some cases it&#x27;s also not clear whether it&#x27;s a win. If you are shipping some small Windows-only utility it&#x27;s probably better to ship on the &quot;old&quot; runtime because your deployment will be smaller when you can use the OS runtime.
y42大约 1 个月前
I started working for a team that built an ETL system for a large, globally operating client—handling everything from data processing to data storage. The entire infrastructure was, and still is, based on .NET 4.6.x, MSSQL Server, and SSIS.<p>The problem: everything is tightly bound to the Microsoft ecosystem—Windows Server 2019, SSIS development in Visual Studio (which only runs on Windows), and even a proprietary VPN tunnel to access the servers. Everything. And it’s been like this for years. Needless to say, there’s no proper documentation.<p>I raised concerns that this probably isn’t the most sustainable way to run such a critical system. But no one ever cared. Not only is it technically outdated, but the codebase has also grown organically into a somewhat chaotic structure, with countless things hardcoded in ways that make maintenance a nightmare.<p>The client isn’t tech-savvy, so they never questioned any of it. And the team has always worked in isolation, with no one ever challenging their approach. Thing is: they are total experts. They know the system inside out. “Never change a running system” is the motto of the day.<p>Now they’re sitting on this massive, outdated, self-built system. It’s probably difficult to find developers willing or able to work within these constraints. I’m standing on the sidelines, having lost the motivation to help, wondering whether they’ll ever get out of this—or if things will just quietly fall apart in the coming years.<p>In all my years as a developer&#x2F;engineer across several companies, this is the first time I’ve encountered such stubbornness and turf protection. (If I ever end up this stubborn, please slap me!)
评论 #43646572 未加载
jmull大约 1 个月前
(I&#x27;ll speak about .net since that&#x27;s what I know.)<p>MS dropped compatibility, so there really is no migration path off of .net framework, short of a full port. The resources -- time and money -- for this simply don&#x27;t exist in the great majority of cases.<p>&gt; might be decades away rather than years<p>It&#x27;s <i>never</i>.<p>(Short of the decay of civilization, that is, to the point people can no longer run software generally).<p>People will run their .net framework software until they literally can&#x27;t anymore. If MS won&#x27;t&#x2F;can&#x27;t support it, another way will be found -- probably legacy software will run in virtual legacy environments, with security patches applied around it somehow (this approach is already in full swing, of course).<p>I&#x27;m not sure where the idea that everything that exists so far will conveniently disappear to make our lives simpler when something new comes out. It just doesn&#x27;t work that way.<p>With the new .net, MS hasn&#x27;t gotten away from anything. They just have yet another thing to support.
评论 #43643494 未加载
dachris大约 1 个月前
Migrated a small-ish project from ASP.NET Framework (.NET 4.8) to ASP.NET Core (i.e. .NET 8) including EF6 to EF Core last year. Even though it was pretty smooth sailing (the application was already using MVC), it was still a few weeks work.<p>Rewrite queries that are not yet supported on EF Core, create some new DTOs, create drop-in replacements for stuff that isn&#x27;t there anymore, create plumbing to connect some old stuff to some new stuff. Figure out what&#x27;s the new replacement for XYZ and use it correctly to not break anything. Replace nuget packages that are not maintained anymore or have so few downloads that they are a supply chain risk.<p>You need to test every endpoint, every query in your application.<p>And in the Microsoft World you&#x27;re still pretty ok, overall, it&#x27;s quite stable.<p>God forbid you put your money on the wrong web framework (not even talking frontend) in the Java space. There&#x27;s still Tapestry&#x2F;Struts&#x2F;Grails&#x2F;JSF&#x2F;GWT&#x2F;Play etc. applications serving your request out there. Saw some banking website with &quot;.do&quot; urls recently (indicative of Struts).<p>Unless we get superhuman AI that can do such migrations all on their own, those zombies might have a longer working life left than lots of developers. Many companies just can&#x27;t afford to upgrade - there&#x27;s so many systems built over decades that just do what they should do. Why shell out tons of money to just get the same functionality?
评论 #43643483 未加载
ivolimmen大约 1 个月前
Java 8 to Java 9 is a huge change. Internal parts&#x2F;utils where dropped. Modules where introduces that makes building your software slightly more complex. If your team is using an external product build on top of this JDK a migration to a newer is often delayed because of the external dependency (IBM WebShere took ages to migrate) plus it might require a new license and extra costs.
fhd2大约 1 个月前
I&#x27;ve seen a number of startups who are stuck on .NET Framework, simply because some affordable agency built them an MVP with ASP.NET a while ago and it worked (TM) to get the business going.<p>Then someone like me gets called into a situation where they have ridiculous hosting costs (Windows-only, typically also MS SQL), nasty performance issues, and struggle to stay productive and find developers. The most reasonable path forward I see in those situations is a gradual migration to .NET Core and something like PostgreSQL.<p>And that&#x27;s a major investment. Microsoft couldn&#x27;t have made .NET Framework code harder to port to .NET Core if that had been their explicit goal. I find database migrations with Entity Framework similarly difficult compared to other ORMs. Startups can sometimes afford such investments, but often not.<p>And that&#x27;s how you ironically get 2-3 year old startups stuck on a death march old school enterprise code stack. It appears to be more common than I&#x27;d like it to be.
评论 #43643431 未加载
评论 #43643348 未加载
stevoski大约 1 个月前
Java has an almost unbroken history of hassle-free version updates, all the way back to Java 1.0. (Okay, okay, I know you have a specific anecdote of a broken version update. I said “almost”.)<p>The one major exception was from Java 8 to Java 9. There’s some good reasons why Java 8 to Java 9 wasn’t a smooth upgrade for all. But that’s a story for another day.<p>For slow-moving enterprise IT departments, that would involve a major “update Java” project. Which involves budgets and people and not doing other things in the meantime.<p>Hence why Java 8 is still so prevalent in enterprise world.
评论 #43644655 未加载
评论 #43644012 未加载
评论 #43646762 未加载
garganzol大约 1 个月前
At my workplace, we treat .NET 4.x as an enterprise runtime considering its widespread availability and good maintenance. While we design and compile all the modules with first-class support of new .NET versions, all of them are able to run on .NET 4.x as well. To make that possible, we use a handful amount of polyfills. Fortunately, it all works transparently without causing any troubles.
rafaelmn大约 1 个月前
&gt;It&#x27;s kind of ironic that even today, the default .NET version baked into fresh Windows installs is 4.6 (or nearby), not the shiny new .NET 8&#x2F;9.<p>This is because the distribution model changed ? You would probably publish self-contained .NET app these days ? Not sure - have not built a desktop app in .NET in a decade :)
评论 #43643173 未加载
ksec大约 1 个月前
I think there is an increasing number of Enterprise planning to move direct from JDK 8 to the latest LTS JDK 21. You get insane amount of improvement just from the JVM alone.<p>It is sad you dont often hear about any of these on HN. C#&#x2F; .Net, Java &#x2F; JDK, PHP, MySQL, MSSQL, Oracle, or anything older, boring technology that is getting steady improvement, production usage, boring and never getting the upvote to get on main page for discussions. Everyone is chasing new hype and new JS front end.
评论 #43651866 未加载
评论 #43643249 未加载
PaulHoule大约 1 个月前
Not long after JDK 8 Oracle made some changes to reflection that broke a lot of code, although often you can unbreak it with the right command line arguments.
naasking大约 1 个月前
&gt; - Industry inertia — teams hesitate to rewrite working systems without a compelling business reason.<p>Isn&#x27;t this how it should be?
评论 #43643471 未加载
nobleach大约 1 个月前
I&#x27;ve worked for multiple shops that basically just moved to Java 8 and then bolted an anchor to the nearest pylon. A few made one move to JDK 11 for the &quot;LTS&quot; experience. I can understand their reluctance to move on as the move from &lt;8 to 8 brought a lot of pain. Those old apps had a lot of cruft. Your modern Spring Boot app shouldn&#x27;t be as tough though. (ByteBuddy maybe an issue). Even the folks that have moved on, aren&#x27;t really using any of the new functionality. I realize every shop is different, this is just my experience.
sruffatti大约 1 个月前
I work for a 40 year old private enterprise with a large Java 8 micro-service architecture. My current project is to facilitate the migration to Java 21.<p>As you point out, there needs to be a compelling business reason. In our case, we are migrating to K8s as well, which is easier to make the business case for.<p>Security helps make the case as well. Any enterprise using Java 8 and Spring Boot is riddled with CVEs.
评论 #43643245 未加载
vintermann大约 1 个月前
I guess those are runtimes just predating a fairly large breaking change (actually I know they are for C#, and I have a vague idea of what broke from Java 8 too).<p>I think that updating from old version is prime AI work. It&#x27;s not hard, usually. It&#x27;s just a lot of boring, soul-sapping work, enough that if you set the famous 10x engineer to do it, they wouldn&#x27;t be a 10x engineer by the end.<p>Then again, maybe a super-engineer would do something wild like the Minecraft 1.8 modding community did... despite being a pile of code injection hacks into a famously messy codebase, chock full of reflection and classloader shenanigans, they actually found a way to run it on a newer version of Java than the official, latest version of Minecraft can run on.
scojomodena大约 1 个月前
I know the .NET story much better than Java. .NET Framework support is tied to the OS support for one thing, so as long as Windows is supported, so is the corollary.NET version.<p>One of the values of .NET Core is that it doesn&#x27;t need to be installed at all in the OS.<p>We are migrating away from. NET as a SaaS company. Our Monolith is in Framework and being deconstructed into .NET (current) services. It&#x27;s a journey, hoping to be done in 2 years. We did successfully migrate the frontend from webforms to React, page by page. I&#x27;m sure there are other teams as well. I just interviewed a lead that was on a team doing the same thing on a Java 8 platform with a monolith.
评论 #43643510 未加载
评论 #43643332 未加载
评论 #43643272 未加载
pharsharao大约 1 个月前
In the case of .net , I think its due to support of windows OS like 7 , In my part of the world users refuse to update their OS. Software providers need to keep on supporting Obsolete OS&#x27;s. Thus Runtime support exists till date.
jeroenhd大约 1 个月前
Upgrading JDK 8 is a pain. Many JDK libraries have been moved to external dependencies (which is fine) with new class paths (which breaks existing code). Source code can be fixed with find&#x2F;replace, but reflection stuff needs to be updated manually.<p>JDK9 also introduced a good modularization system, which broke many Java reflection hacks. JDK17 introduced even more boundaries which JDK21 enforced.<p>Companies with the foresight to upgrade before the end is near have been working on fixing these issues for a while now, but with Red Hat still supporting JDK8 for another decade or so, I don&#x27;t think we&#x27;ll be rid of these old runtimes any day soon. Furthermore, Oracle only distributes JVM8 to consumers. If you&#x27;re building desktop applications, targeting JDK8 is a lot easier than targeting anything newer, unless you precompile your application or ship your own JDK.<p>Java devs can use any number of OpenJDK forks with support. Companies stuck in their ways will not update their toolchains until they break, and even then they will try to find workarounds before they implement fixes.<p>I don&#x27;t know about .NET 5+, but without WinForms, new .NET just isn&#x27;t a replacement. MAUI is nice and all, but it&#x27;s not as simple and easy to use as WinForms, and there&#x27;s no direct translation between the two.<p>Futhermore, the difference between .NET 4 and .NET 5&#x2F;Core is that .NET 4 ships with Windows and is guaranteed to be available. .NET 5&#x2F;Core will need to have its runtime be installed.<p>I think both Oracle and Microsoft are considering anything newer than Java 8&#x2F;.NET 4 to be &quot;stuff for large, packaged applications, web servers, and enterprise&quot; and the old software part of their legacy API for consumers. I don&#x27;t know of any Java application that requires a newer version of Java than Java 8 (that isn&#x27;t itself an SDK for developing Java applications).<p>All of that said: upgrading Java is worth it, just for performance reasons alone. Java may not have the latest tech and it still lacks basic modern language features such as nullable types, but JVM is still an outstanding piece of tech.
评论 #43643239 未加载
sebazzz大约 1 个月前
&gt; It&#x27;s kind of ironic that even today, the default .NET version baked into fresh Windows installs is 4.6 (or nearby), not the shiny new .NET 8&#x2F;9. Meanwhile, Oracle still offers JDK 8 — albeit behind a paid support wall — much like Microsoft continues to patch .NET 4.x via Windows Update.<p>You answered your own question. .NET can <i>never</i> ship with Windows, because it then _needs_ to be supported forever. Imagine Microsoft needing to not only support .NET Framework 4.x, but also support .NET Core 3, .NET 6, .NET 8 etc.
Nullabillity大约 1 个月前
.NET Core&#x27;s migration story was a disaster; Microsoft&#x27;s official guide basically recommended that you create a new project and copy files over one by one and hoped for the best. Many people didn&#x27;t bother.<p>Java 9 was also a mess; inching slightly closer to Scala and Kotlin (but not enough to make it worth going back to Java-the-language if you had already switched to one of those), while breaking a lot of existing code (a cardinal sin for a platform whose stability was its primary claim to fame). Many people didn&#x27;t bother.
DeathArrow大约 1 个月前
&gt;And are there any good examples where teams actually migrated away from 4.x or 8.x successfully<p>Sure, at my former workplace they migrated one of the products (a document processing platform) from .NET 4.5 to .NET 8.<p>It&#x27;s quite a lot of work to do something like that and most companies who have old products on .NET 4 don&#x27;t care to update them because they still work. Many are still adding new features to old .NET 4 codebases.<p>Many will only upgrade if Microsoft deprecates .NET 4 and stops providing updates.
vbezhenar大约 1 个月前
Migration from Java 8 is very easy, I don&#x27;t really know why they keep using old versions. Probably lack of qualification. Or project is just dead with pinned ancient dependencies of terrible libraries which rely on JVM internals. I&#x27;m using Java 8 with one project, because that project must run on Windows Vista and later javas don&#x27;t run on it. As soon as Windows Vista would become irrelevant, I&#x27;ll drop the support in one day.
评论 #43643271 未加载
评论 #43643365 未加载
AndrewDucker大约 1 个月前
Java 8 is...the 8th version of the Java Framework. It&#x27;s supported until 2030. But frankly you can just move to more recent versions. The main reason not to is that once you do you&#x27;re stuck moving more often, because the later versions are only supported until 2031. So you&#x27;re not gaining much.<p>.Net <i>Framework</i> is the version of .Net that ships with Windows, and it&#x27;s supported as long as Windows is. For Windows 11, presumably until at least 2035. It&#x27;s entirely possible that Windows 12 will <i>also</i> ship with .Net Framework, as otherwise they&#x27;ll have to convert a ton of MS apps to .Net, at which point you&#x27;re safe until 2045. .Net (previously .Net Core) is the open-source cross-platform framework forked from .Net Framework. And once you move to that you&#x27;re going to have to move to the latest version every 3 years, because that&#x27;s how long they&#x27;re going to support an LTS version for.<p>So if you have a bunch of apps and don&#x27;t care about the new functionality, and just want to make sure you have security patches then you&#x27;ll stick to the version that you&#x27;ve got, and you&#x27;ll only move once they tell you you have to.
haroldfredshort大约 1 个月前
Windows 11 still includes the Visual Basic 6 runtime, which predates .NET by quite a bit (from 1998!). There are many working systems that still rely on this.<p>More about this here: <a href="https:&#x2F;&#x2F;learn.microsoft.com&#x2F;en-us&#x2F;previous-versions&#x2F;visualstudio&#x2F;visual-basic-6&#x2F;visual-basic-6-support-policy" rel="nofollow">https:&#x2F;&#x2F;learn.microsoft.com&#x2F;en-us&#x2F;previous-versions&#x2F;visualst...</a>
zerr大约 1 个月前
Can we all accept the notion of feature-complete software?<p>It is easy if we take away employment incentives, promotion oriented work.
hiAndrewQuinn大约 1 个月前
In the case of Java 8, at least, I know that later versions significantly changed the kind of metaprogramming, standard library, and even project structure you could use. So I think there&#x27;s more friction to move off of it than you might first imagine.
regularfry大约 1 个月前
I suspect a non-small part of the story is accounting rules. If you&#x27;re in a place where such an upgrade would be paid for out of operational expenditure, there&#x27;s always going to be a reason not to do it.
esafak大约 1 个月前
Enterprises are stuck on Java 8, so that&#x27;s what everyone is familiar with. This is why I use Kotlin; if you don&#x27;t know the new stuff anyway, you may as well just use a better language.
stanac大约 1 个月前
I don&#x27;t see MS dropping support for .NET Framework 4.X. If they do they will probably announce it 10 years upfront, like they did with Silverlight.
p_ing大约 1 个月前
SharePoint is built upon the .NET Framework, as is at least part of Exchange. .NET Framework has a very long life ahead of it.
mzl大约 1 个月前
For a very long time, Scala was stuck at JDK 8 which hindered anyone that had a mix of Java and Scala code from upgrading.
speed_spread大约 1 个月前
For once, the answer to the question in the title is &quot;Yes&quot;.
garganzol大约 1 个月前
Note how HN admins artificially de-ranked this topic. Come on guys, stop being puppets driven by venture capital, that&#x27;s dishonest and boring.