5 ms·
Here's hoping .NET can some day shake off its Windows exclusivity stigma, as I've been writing pretty interoperable C# code for the past 3-4 years or so, and it
by kemonocode 5y ago
Here's hoping .NET can some day shake off its Windows exclusivity stigma, as I've been writing pretty interoperable C# code for the past 3-4 years or so, and it's been a joy. Night and day compared to Java, at least.
I'll admit it takes some time to get started, but it's smooth sailing once you get past the initial hurdles of setting up your project, understanding some idiosyncrasies when it comes to ASP.NET/Web API/Entity Framework if you're going that route for your backend and such. And now with Blazor, I can even work on the frontend and touch Javascript as little as possible.
- HeyLaughingBoy 5y agoI know. The first time I deployed a .NET application to a box running Linux it was like a great disturbance in the Force :-)
- rtomanek 5y ago> interoperable C# code for the past 3-4 years or so, and it's been a joy. Night and day compared to Java, at least. Can you give an example of this interoperability, please? Also -- what was the difference compared to Java that you noticed?
- cameronh90 5y agoIt's interoperable by default, unless you add a Windows-specific library like WinForms.
- pantalaimon 5y agoeh, Windows Forms is the default GUI library, this means relying on third party libraries if you want to write cross-platform desktop apps.
- WorldMaker 5y agoThere isn't really a "default" GUI library at this point. WinForms and WPF are both rather equal in support. (Arguably WPF gets far more updates than WinForms, most months.) MAUI (in .NET 6+) will be a first party library for some types of cross-platform desktop apps.
- sgtfrankieboy 5y agoThe default "GUI" library for .NET Core has always been web.
- kemonocode 5y agoI've mostly been writing backend code which pretty much works just the same whether deployed on Windows and Linux, that's interoperability by default. With Java the issues came from elsewhere- it was less so the interoperability and more just how messy the whole ecosystem is and how there are some aspects of the language itself (such as the excessive verbosity and the way the standard library is structured) that kept mounting up as little annoyances over time. Kotlin wasn't really an option at the time, either.
- blacktriangle 5y agoIt's not really about the exclusivity, more so its about being driven by MS and their internal needs and their internal timelines, and nothing will change this. This is not a criticism of MS, .NET is their platform to support their products, it's just a reality. It's the same problem with Swift trying to escape the Apple ecosystem while ultimately being driven by Apple's needs. So if you're an MS dev whose looking for some additional reach into other platforms, the increased interoperability is great. However for those of us not working on MS platforms, .NET has a huge uphill battle competing with every other platform available to us.
- DarkmSparks 5y ago2nd that, couldn't quite put my finger on it, but this says it nicely. I want to like what I'm seeing in .net, but there just doesnt seem anything compelling when compared to say Graalvm or even nodejs. The VM market is very very crowded with fantastic offerings these days, many of which share many commonalities easing dev while each is tailored for a slightly different market. in the case of .net - xbox.
- oaiey 5y ago.NET is not tailered to XBox. UWP (which runs Xbox apps) is lacking now 2 versions behind .NET itself. When you wanted to address unity, that is far more than Xbox. And gaming is a maybe 20% share of .NET.
- oaiey 5y agoWhen it comes to what it is tailored: there are two VM models: CoreCLR optimized for speed and throughout and MonoVM optimized for aot and small size workloads (aka apps and webassembly). Nodejs is beat by CoreCLR dramatically on its own domain. GraalVM i have to little insights but CoreCLR beats/equals performance of it java equivalent. I guess you can tweak GraalVM a lot more than CoreCLR because that is an actual weak point of the CoreCLR.
- brokencode 5y agoOut of curiosity, what is missing in .NET that isn’t being prioritized by Microsoft and that other languages provide? C# has been pretty groundbreaking, adding features like async await and generators before other mainstream languages. They are also pushing forward ASP.NET pretty aggressively, even having first class support for gRPC and other popular technologies.
- rcarmo 5y agoI've been playing with the AoT compiler and it is decent, especially if you strip the binaries to get 10-20MB files. Biggest hurdle for me (as a UNIX greybeard, Java survivor and occasional LISPer) is ramping up on idiosyncratic C# syntax and various generations of .NET libraries But what little I've done in the past couple of months (with .NET 5) works OK in Linux, and the tooling (VS Code + Remote to have .NET on a remote VM at a safe distance from my Mac) suitably lightweight and hassle-free. (full disclosure: I actually work at Microsoft these days but never developed for Windows alone - did mostly C++ and Java when I targeted it - and never did .NET before, as it only makes sense for me to use it now that I can target Linux)
- 5e92cb50239222b 5y agoJava is miles ahead in terms of cross-platform support. .NET applications may be running fine on other operating systems (I write them at $DAYJOB and they mostly do), but the development tooling is absolutely incomparable across OSes. As long as .NET is being developed and pushed by Microsoft, the situation won't change, because it doesn't align with their incentives. Some people/companies also care about more than the big three operating systems that MS cares to acknowledge. .NET has no official FreeBSD port, for example.
- manigandham 5y agoVS Code is available everywhere and can even connect to remote environments. Visual Studio is on Windows, and there's a Mac version that's slowly getting better. What other languages stacks provide a much better tooling experience? If you use IntelliJ then you get the same thing with Rider (which is just IntelliJ + Resharper), and the rest are all basically VSCode at this point.
- 5e92cb50239222b 5y agoWell, perfview, for one. I have to keep a Windows VM nearby just for that thing. It doesn't come in handy every day, but is absolutely indispensable when it does. They have a shitty Linux port which basically doesn't work and receives almost no development. I should also add that you /can/ dump a dotnet application running under Linux. It's just you can't do anything really useful with it, the best tooling is Windows-only. Clearly shows you their priorities.
- NicoJuicy 5y agoUse perfcollect for Linux: https://github.com/dotnet/coreclr/blob/master/Documentation/project-docs/linux-performance-tracing.md https://github.com/dotnet/coreclr/blob/master/Documentation/... Since that is adapted to use Linux specifics :)
- Zingler 5y agoIt's been a while since I looked at .Net, but last time I checked it was inferior in terms of multi-platform tooling to many languages. So take VS Code for example, last I looked you could not build Xamarin apps in it, where as with Go, JS, Dart, etc you can use VS Code to create anything in those languages.
- lvass 5y agoPerhaps developers should still consider .net as windows-only. Given how the large the runtime is and it's creator's reputation for pushing malware, I would not dare run .net core directly in any of my machines, and many non-windows users would probably feel the same. I don't think I even have the option in openbsd. Targeting Linux though I guess makes sense because of containers.
- schoolornot 5y agoThey played games for so long with keeping it closed source and then only opening parts of it to ECMA and then advocating Mono before finally opening more parts of it. I wanted to play with LINQ back then and couldn't. So non-MS people said screw it and moved on.
- heavyset_go 5y agoWhat's the cross platform GUI situation like on .NET? I know MAUI won't work on Linux, and no Linux support is a deal breaker for me. F# is really nice, and I enjoy using it for web related things, but I have to reach for different languages if I'm looking to build a GUI right now.