3 ms·
Neither needs C#. You can require runtime at a host, you can package it with your binary (which Go does, and C++ effectively too if you link statically). But t
by neonsunset 3y ago
Neither needs C#. You can require runtime at a host, you can package it with your binary (which Go does, and C++ effectively too if you link statically).
But then again, Java can’t even do that. Its build and packaging systems are a tedious joke. If you want to package a C# binary, you simply invoke either of the two (one is JIT, one is AOT):
dotnet publish -o {dest} -p:PublishSingleFile=true -p:PublishTrimmed=true
dotnet publish -o {dest} -p:PublishAot=true
Done. No runtime required.
Also, most applications use ASP.NET Core and EF Core in back-end (which are platform-agnostic) and a selection of libraries for desktop and user facing applications on front-end: Avalonia, Uno, now MAUI, Xamarin (all of these are cross-platform) and historically WPF, Windows Forms, UWP and WinUI as their successor.
- lmm 3y ago> Done. No runtime required. But the part that matters is that you can ship a single file to people who are on any platform and be confident it will work. Yes the file is .jar and using a runtime, but those details are mostly irrelevant - everyone has Java installed somewhere. Whereas with C#, sure you've got your nice binary, but if I try to run it on FreeBSD or Sparc is it going to work? From bitter experience, probably not - as GP said, probably for reasons that are more bad code and culture than a bad language, but the fact that several of those major (even if they're now considered "historic") GUI libraries are Windows-only and almost-but-not-quite work outside Windows sets the tone for the whole community culture.
- neonsunset 3y ago> Sparc > Presence of platform-specific GUI libraries makes different cross-platform libraries worse > Supporting both self-contained and runtime-dependent lean binaries is bad Hopefully this reply is a bait, otherwise I give the exercise in mental gymnastics a solid 7/10.
- lmm 3y agoIn Java-land, someone puts a jar on their website, and it will work on whatever OS, on whatever architecture, even if it's a GUI program. In C#-land, that doesn't seem to be how it works. If it's a GUI program it'll probably depend on WinForms and fundamentally not work on official .net core for non-windows. It might work on Mono if you're lucky, but often it won't. And whether or not the program "could" work on your OS/architecture, most of the time what they'll put up on the website is a single-platform binary. Whatever the theoretical advantages, as someone just trying to actually use the thing on my computer, that's worse.
- neonsunset 3y agoThis almost makes me feel like we're back in 2007. Everything is so much simpler, my mother just finished cooking borscht and is calling me to kitchen. Life is good.