7 ms·
C# and .NET's Sudden Ubiquity
- untog 12y agoGood post. It's funny, because C# has been ubiquitous for a long, long time - just not in cool areas like the startup scene. I was a C# web dev for years before moving onto using Node or Ruby as a backend in order to be able to work on more interesting projects. I look forward to a future where C# is more ubiquitous, because, as the post states, this will largely come at the expense of Java, which has always felt like C# Only Not Quite So Good. Cross-platform these days means a lot of mobile work, and if we can write our server backends, iOS Apps and Android apps in one language that's a big win.
- serve_yay 12y agoI used C# for a long time before moving on as well. Mostly web stuff, but also desktop software and services (Windows equivalent of a daemon). I always really liked the language, and the libraries are mostly pretty good, but it being tied to Windows and especially IIS was always a real problem. But I think .NET has also long suffered from a more anemic ecosystem than other platforms have. Things like a package manager have just recently come around. Things like tooling and educational resources seem more spotty than for other platforms. (Although some of the for-pay .NET tools are really, really nice.) So, I too would like to see it used in more interesting ways than line-of-business desktop/web apps. But I wonder how the above things will play out. I'm really glad it's not so tied down to Windows anymore. But maybe there are other issues to resolve, now.
- tracker1 12y agoI'm just hoping that the stability and ease of deployment approaches what it is on windows for server-side apps. Also, I wonder where VS will wind up with all of this. If I could use VS on OSX or Linux that would be my preference at this point. I'd looked into mono (mod-mono/fcgi) a number of times, and it was always painful, with some performance/stability issues, and in the end worth the server license to just not deal with it. For the past few years, I've been doing more node work than .Net and loving it. That said, I wouldn't mind doing some pieces in C#/.Net because it has a lot of niceties as well. It's generally the "enterprise" tooling, and excessive use of design patterns that has made it more painful in practice. Good times indeed.
- palindrone 12y ago"Java is no one's first choice for writing desktop UIs, whereas .NET is standard for business applications" From my PoV neither Java nor .NET is the first choice for UI. HTML and JS is. Especially for large multi-million dollar software. I know what I'm talking about here. Yes, HTML&JS are bad and crap, but may times better than applets or desktop apps. Nobody likes vendor lock-in. When it comes to server side .NET is much worse than JVM. So now, you got the picture why Mincro$oft made this desperate move. Developers, developers, developers...
- chrisbro 12y agoCould you elaborate on why server-side .NET is much worse than JVM?
- palindrone 12y agoJVM runs on wider range of hardware. JVM compiler is faster than .NET equivalent. JVM has more programming languages tagetting it. these languages have much more mature libraries. Some of them run on .NET, but almost none of the languages from .NET runs on JVM. JVM has many many more man years spent on libraries, so Java libraries are much more trustworthy. And so on... JVM and Java are much more reliable. Java backwards compatibility beats .NET every time. How many .NET frameworks do you need to install if you need software written in different versions of .NET? Answer: all of them. And Java?: only one. I've got 3 or 4 versions of .NET on my system because of this.
- joshyeager 12y agoThat's interesting, because my experience has mostly been the opposite. On the server side, you can install whichever .NET versions you need and they will live together quite nicely. But you can only install one Java version, and updates randomly break things (that's probably not true in general, but that's how it seemed to me). And I can only remember a handful of issues that were caused by the .NET framework, we had constant reliability issues with Java. Having lots of languages available is nice, but it's not a core requirement for a platform in my opinion. .NET has C# and F#, and they complement each other very well. I haven't had any library issues with Java or .NET, so I can't comment on that. My guess is that my problems with Java stem from lack of experience with it, and my success with .NET is because of my deep experience with it. So it seems likely that your perspective is for similar reasons.
- megaman821 12y agoIt's weird the C#, CIL, and the CLR are more open than Java, Java Bytecode, and the JVM. Java has many more high-quality open-source libraries than C#, but hopefully over time C# will catch up.
- pm90 12y ago" .NET has a key advantage over Java in its support for clients. Despite the significant improvement JavaFX delivers over Swing, Java is no one's first choice for writing desktop UIs, whereas .NET is standard for business applications. " This will be interesting. Obviously, .NET is the best way to make desktop GUI in Windows; I wonder what they will do to support GUI creation on Linux and OSX.
- gagege 12y agoA WPF like framework for each platform would be very nice. Code the interface three times and share back end code between them. I also like Xamarin.Forms' way. Describe, in general terms, what you want the interface to look like, and it generates native GUIs for Windows Phone, Android, and iOS that follow each of their different UI conventions (tabs at the top, tabs at the bottom, menu button, etc. depending on the OS).
- andyhnj 12y agoI'm not sure about this statement: "Of these platforms, Linux is clearly the most important. Today, Microsoft earns much of its (record) profits from enterprise software packages (SQL Server, SharePoint, Exchange, etc.). By running .NET on Linux, it now has the ability to run those apps on a significant majority of server platforms." Are significant portions of SQL Server, SharePoint, and Exchange written in .NET managed code? I would have thought most of the code base for that stuff would still be in non-managed C++. Will having .NET on Linux make it significantly easier for them to release SQL Server on Linux?
- custardcream 12y agoVirtually none of SQL server is. Most of SharePoint is. Exchange is all c++ still. So we might see SharePoint for Linux yet. The other two I suspect are very tied to win32.
- tracker1 12y agoI know that a lot of SQL is likely still C/C++, but MS does put a bit of effort into being able to be cross-platform. I don't know how much of SQL is tightly coupled to windows, but it wouldn't surprise me if MS wanted to they could do a linux, or OSX release. Just look at SQL's installer for tools, it really seems to be a gui on top of some cli tools. Its' origins are in Sybase, which IIRC supported a few platforms early on. MS-SQL is a pretty good value compared to say Oracle. The management interface as well as scaling (replication) support is very well integrated. I've wished PostgreSQL could get to this level in the box for years now. I think this has more to do with developer mindshare than anything, especially with Azure as a platform. If you can write .Net apps and run wherever it's very appealing. Even with Mono it was a nice story to have. Integration with system libraries to .Net is much easier than Java's JNI and the like. If I can write C# in VS and deploy to Linux as easily as with windows, it will likely return as my back-end of choice.
- bad_user 12y agoI don't think so and I don't think that's the reason behind this move. I'm pretty sure this is about gaining back some developers. All the cool things happening these days on mobiles and on the web are not happening with Microsoft's platforms. It's important to remember from where .NET comes from. It was part of a larger vision of Microsoft that included Windows Longhorn, .NET Passport, project Greenwich and Trusted Computed. Of course this vision screamed "Lock-In" and it was about just that (too bad that it is happening anyway, yet people aren't paying attention anymore). So .NET wasn't opened because it was seen as a way to keep people on Windows. Sure there was an ECMA standard, but that was just like putting lipstick on a pig (though ironically that ECMA standard is much stronger and useful than Java's JCP, which is a complete farce). Unfortunately they missed the forest from the trees. The web developed outside of their walls, mobiles developed outside of their walls. All the cool things happening right now are happening outside of their walls. And now all of a sudden, a Windows-specific platform becomes a liability, a way to keep people out of Windows or whatever Microsoft wants to do. Personally I'm happy about it. It's a pretty solid platform and a good alternative to the JVM. Given the dickish moves by Sun against Apache Harmony and by Oracle against Android's Dalvik, I think it's about time the JVM had some competition. .NET is still missing a healthy ecosystem though. For Java / the JVM the ecosystem is intimidating at first (e.g. so many choices, so much open-source, multiple IDEs, multiple languages, WTF), but it's actually its biggest strength. On the other hand if there's enough interest, then .NET can catch up as the basics are taken care of.
- deleted 12y ago[deleted]