3 ms·
The main problem I have seen is that much like Swift or Cocoa, there are a bunch of Totally Not Open Source frameworks/libraries/etc that most applications for
by 65a 3y ago
The main problem I have seen is that much like Swift or Cocoa, there are a bunch of Totally Not Open Source frameworks/libraries/etc that most applications for the original target platform use, and you must then dig into stack traces or hack code to avoid weird crashes because the code wants the Windows way of determining the local timezone, etc. I'm sure it could be great, I was a dot net developer many years ago, and it was fine, but it's a lot of work to make it work on Linux compared to the average jar. It's probably bad code vs bad language, but I've found other stuff easier to use or run, and avoid it as much as possible. Not comparing C, C++, Rust or Go because those don't even need a runtime installed, and I'm much more familiar with coding in those languages.
- neonsunset 3y agoNeither 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.