The problem with .Net's vision has been painfully obvious to anyone following .Net over the years - it is still Windows First. While in Enterprises and Startups , Linux is what matters on the Server.
As an example, just last week I was looking for some http2 libraries in C#. Go and Java have mature libraries already in production, while .Net only supports http2 services on Windows. That in turn affects other ecosystems as well, such as gRPC Services. This to me is a red flag. Given how important something like http2 was going to be, how come Microsoft is so late to the party? What exactly is .Net's niche, given front-end wars are over?
Another example, the very promising CoreRT project (https://github.com/dotnet/corert) page says this about Linux: "Same as Windows, the libraries are less complete."
As a late comer, .Net faced an uphill climb. High-end web tooling is almost exclusively JVM based (Kafka, Cassandra, Elastic Search, Kibana etc). The upcoming competitor is Go, not .Net. If Microsoft doesn't pour a billion dollars into getting .Net ready for Linux in 2018, .Net is over.
 I've been a consultant to several Small and Medium sized businesses (especially in Medical) which predominantly use Windows and .Net, and that's still a huge market. But even they are looking to move off Windows.
.NET runs everything from desktop apps to web infrastructure to mobile games - it's a lot more encompassing than building some websites. It also integrates into a vast ecosystem with Office, SQL Server, Active Directory and is backed up by the fast-growing Azure Cloud. Most small, medium and 100% of the Fortune 500 run on .NET code and services.
HTTP/2 is just not part of Kestrel yet, which is the default new .NET Core web server. You can always use other libraries and this doesn't affect GRPC at all (which can easily generate the server from .proto stubs).
And how are the front-end wars over? Asp.net has great integration with all these modern JS frameworks, along with MVC and WebForms which are both still viable and used often. Why does there need to be a "niche" when .NET already does far more?
It seems like you found 1 missing feature and are proclaiming it a failure when the reality is that it's one of the most common frameworks today, and now also runs great on Linux. It'll be around for decades.
AKA mobile and Windows.
.Net is cross platform on mobile. Outside of it, if your project ever need to run in anything that isn't Windows, or communicate with anything that isn't Microsoft, then you can't use .Net. That makes it fit for enterprise CRUDs and not much else.
I mean it is honestly by far the best framework I've uses to communicate to everything from 40 year old hardware to modern web services and APIs.
As far as "run on anything that isn't windows" I'll grant you, that's a very emerging area, but you can run .net (or some flavor it) on a lot of different platforms.
Hell I've got a raspberryPi running windows 10 IOT with .net running on it, and it works like a top.
And statements like "If Microsoft doesn't pour a billion dollars into getting .Net ready for Linux in 2018, .Net is over." say's to me, you don't really have your finger on the pulse on the enterprise ecosystem at all.
You'll be hard pressed to find a language that has breadth and depth that .net has. Couple that with the new push to Open source, from an enterprise standpoint, it's a very attractive platform.
Windows 10 IOT is basically Raspberry Pi and Allwinner A64 only at this point, which excludes most of the ARM SBCs out there.
The problem with both these platforms is they are horribly I/O limited, to the tune of 1 full USB port worth of bandwidth. Other SBCs commonly push 4x that or more!
These programs can do anything, just like any other code in any other language, and the protocols (like HTTP or UDP) to talk between processes or programs have nothing to do with the code itself, which gets compiled down to the same machine level instructions anyway regardless of what language you use.
So what communication protocol are you using that .NET can't talk to? In Enterprise it's almost always SOAP or REST and .NET has some of if not the best technologies for producing or consuming both.
That's just plain wrong. Not only might .NET be a good option for a backend system (which can, of course, communicate with any platform), but people have been using .NET on non-windows systems via Mono for many years
With the emergence of AJAX though most competent WebForms developers dumped it because of then overheads and used the framework more like Classic ASP while integrating AJAX.
In retrospect, I'm not surprised MVC gained popularity so quickly.
The issues with FormState made it mostly unusable over the internet, it was relegated to intranet applications for the most part.
You meant stateful, right? I mean if we're being pedantic it's good to actually be correct.
Something that has success is successful, and when you're having trouble sleeping you might say you're feeling wakeful. Why then would it be state-full?
If you have a massive complex webapp then you should use MVC, or look at a separate frontend JS talking to a backend API, but WebForms serves its niche very well.
WebForms' selling point is that it is easy to bootstrap, but its limitations quickly become a liability in an enterprise setting, where small apps rarely stay small. Once you decide you need to extend your app and/or integrate with newer non-MS web technologies, you are backed into a corner.
WebForms is something that really ought to have been deprecated, but people are still clinging onto it because it's so easy to use and there are too many legacy apps that still depend on it.
I suspect it's the kind of Stockholm Syndrome that have kept Mongo users faithful over the years. At the back of your head you know you're going to have to pay down the technical debt later, but you can't resist because it's so easy to get started and to see results.
(though to be fair, Mongo 3.4 onwards has overcome some of the serious flaws of earlier versions)
We haven't seen .NET for a new project in 5+ years. Doesn't mean it's not a viable tool, but the deployment story is a cost nightmare to us, and our teams distrust the upstream vendor.
Go is definitely catching on but nowhere near passing Java, maybe it will someday
Neither Apple nor Microsoft use Java.
Facebook uses PHP, Google uses a lot of languages but mostly C++ for Search. Amazon does seem to use a lot of Java.
From what I understand Apple uses java/scala fairly extensively for backend services.
While I'm happy about the progress and I hope that .NET Core succeeds, I've heard this claim repeatedly and I must say that it doesn't stand up to scrutiny.
The biggest problem of .NET's community and Microsoft's is that it fixated on Java the language, missing out on the improvements that happened in Java the runtime, not to mention the ecosystem.
Just to give a small example, the "tiered compilation" coming in .NET Core has been in Java since version 1.4, so we're talking about 2002. That was the Java version coming with the Hotspot VM, inspired by Self and Strongtalk. And it has only gotten better since then.
Java the language is terrible, we can all agree, however you can swap it with Scala, Kotlin, Clojure, Haskell (Eta), Groovy, JRuby and others, all of which benefit from running on the JVM, with the JVM itself turning out to be a much better host for other languages. Which is a little ironic given .NET's initial marketing.
Also another problem is that the community is waiting to be spoon-fed by Microsoft. In Java's ecosystem on the other hand the endorsement of Oracle is almost irrelevant. Outside the OpenJDK JVM itself most interesting projects are not built by Oracle. And even in the JVM area you've got interesting alternatives like Azul's Zing, featuring an awesome "pauseless GC".
Hopefully with the opening of .NET we'll see some actual competition to the JVM, but to those of us that have been in JVM's ecosystem for some time it's actually pretty clear why .NET lost thus far.
And IntelliJ IDEA has been doing a good job with its support for multiple languages, having great support for Scala, Kotlin, Groovy and JRuby at least. There's also great support available for Clojure built by a third party.
Yes, I think you get most of the advantages of Java. There's a learning curve involved for Java developers of course, but it's very incremental because the underlying platform is the same and this matters.
Only Scala and Kotlin are feasible alternatives to Java for building applications on the JVM or Android. The others in that list are limited by dynamic typing to scripting only or didn't see much adoption for building large systems, e.g. Apache Groovy for glue code and build scripts.
This is what's making me want to move away from .NET. Most really interesting development is done in Java and Linux. With .NET and Windows you are often a step behind.
All the C# I run across is line of business stuff. So it may very well be great for that, but it’s less interesting from a development perspective.
Making it easy to setup a demo project means things may stay on Asure because that's the fastest path to production.
Thus it's about business migrating from Demo (Asure) > Production (Asure) vs Production AWS > Azure.
The VS Code editor is also embedded in the Azure web portal. So by getting people using Code they may find it easier to up-sell to Azure. In fact, Code started life as the Monaco editor in Azure and was spun out into a separate product.
Dev here, our strategy for AI is Azure-first, but not Azure only. While we provide first class monitoring for ASP.net services running on Azure, we also have lots of open source SDKs available for major languages, as well as first class Java and node.js SDKs and are trying to bring some of our other open source SDKs to the same level.
We totally get that ASP.net isn’t the end all be all and that people run other types of services, so we’re trying to bring App Insights to as many of these services as possible.
I think you're right another factor is that there are more Python and Ruby devs looking to write Python and Ruby on the JVM then the clr.
In my world (Fortune 500) boutique tech carries inherent risk.
I wouldn't waste my time converting from a Java infrastructure to a .Net infrastructure and if I were a Linux shop, I probably would stick with Java for awhile, but if I'm already using Windows servers or have my choice today of using Windows only for the backend, I would definitely chose it because of the number of devs and network people available.
Please elaborate. This is the first I have heard from someone experienced in both F# and Scala to assert this.
Write a function that works with any monad? No?
Write a function that works with any numeric type? No?
You can fake type-classes, but it’s in no way a first class citizen. You can’t easily fake higher kinds.
You may not need those features, it doesn’t make my original statement any less true.
I feel very confident stating the opposite. If Microsoft halts all investment in .Net today, .Net will still be around another 30 years at least with maintenance work alone.
It was overly complicated and there were so many gotchas I found in the proof of concept that I did, I backtracked and went with the ASP.Net Core Framework (aka Asp.Net 5) using Kestral on top of .Net 4.6 and using Hashicorp's Nomad for orchestration.
I'll try again in a year....
My own experience is that most large enterprises use Windows because that's what their network people are use to and finding Windows network admins and developers are easier.
HTTP/2 itself requires ALPN to talk to browsers, however a large part of the implementation can already been done without it. Out of personal interest I poured quite a ton of work in the beginning of this year into writing a solid HTTP/2 library for .NET, which could have been the base for webservers as well as things like GRPC: https://github.com/Matthias247/http2dotnet
It's state should be good enough to enable HTTP/2 now with less than a 2 weeks of work. However unfortunately I never got any feedback around it or felt interest in it, even though I think lots of stakeholders should be aware about it.
It seems like the ASP .Net core team is implementing now their own HTTP/2 library, which was far more barebones than mine when I last looked at it (https://github.com/aspnet/KestrelHttpServer/pull/1991). Don't have the time and interest to review the latest state.
and don't forget VB.net, which is an excellent language for non IT professional novice programmers, particularly if they come form VBA. .net provides a good language for novices that gives access to most of the flexibility and power of the framework (outside Xamarin basically).
I'm sort of surprised that Python on the CLR isn't more popular than it is; with the investments made in the DLR specifically for better dynamic language support, that seemed to be a natural move to me.
.net http client does not support http cookies rfc 6265 which is 6 years old.
What gives you the impression that it's being held back?
> High-end web tooling is almost exclusively JVM based...
Pffffft. You can't just pick a few JVM tools and proclaim that those are the only "high-end" options. Far from it. Have you heard of Mongo? Redis? Azure Event Hub? ScyllaDB?
> But even they are looking to move off Windows.
Oh how convenient that your anecdotal evidence supports your argument. Well, I also consult for small and medium sized business including many, many Medical companies. None of them want to move off of Windows. Quite the opposite - some of them have Unix systems that they can't get away from fast enough.
So not only does it lack HTTP2 support on Linux but also non-evergreen versions of windows.
And yes Go is the new competitor for Java, .NET core is a footnote because it has no open source community support.
I'll agree that C# is perhaps the best designed language I've ever used, but it seems that Microsoft decided to open it up many years too late to save it's market share.
Their best bet is creating native Java library interoperability. Third parties have been offering for years, but if it was baked in MS might just have a chance
Net core is a slow moving project for sure, and it's not at a stage to use in production yet, but it'll get there and I look forward to further improvements made in 2018.
At least that's my impression from being on HN for the last decade, and working mainly in MS back-end languages in the UK.
The other one I never see mentioned in the UK is Oracle, I've only had Oracle mentioned to me IRL once, and that's because the local council is inexplicably moving from MS SQL to Oracle for reporting, but they're super incompetent.
I’m french and I only know one person who’ve been on the Java path, and he’s not even working in France. I of course know companies working on Java, but not that much (not at all, if you except those working for Android) and suddenly it becomes crystal clear.
I've worked in startups and digital agencies throughout my career, and C# is everywhere in the latter. It's a lot harder to find startup work, but there are people building on the .NET framework.
You can happily make a career in .NET without ever working in an enterprise capacity.
The only place .NET appears to be discounted is in SV, at least from those I've talked to. Outside of that it's fairly mainstream but obviously you see more of it if you work with it and write/talk about it.
I think it’s the US in general and SV in particular bias of HN: there is an under-representation of the meat-and-potatoes software industry. The one where an average employment is 10 years, and an average employee is 40.
I see a lot of people talking about Microsoft open-sourcing .NET Core. But as someone who's never used it, what is .NET Core? And if .NET Core was open-sourced, what about the rest of it? Am I likely to run into major parts of the ecosystem that are still proprietary?
Also, can I develop and use C# applications on Linux without feeling like a second-class citizen? The ability to easily develop on Linux using free software and then run on my clients' Windows computers is one major reason I use Java at all, and I definitely won't switch to a language that doesn't support Linux properly.
And finally, how likely is Microsoft to fuck free software developers over with proprietary extensions in the future? This is Microsoft we're talking about, after all.
The new open source and cross-platform one is .NET Core and it is currently suited to writing server-side web apps (e.g. ASP.NET Core) and command line applications. It is a reimplementation of .NET and more use cases are coming (UWP, CoreRT, native tool-chain etc.).
The Windows only one is .NET Framework and it is better for graphical desktop apps on Windows. WPF and Windows Forms are not open and are Windows only, so are not in .NET Core.
Finally, Xamarin is also open now and lets you build native mobile and desktop apps on Android, iOS and macOS. Full details of all these are on the official docs site if you want to read more, or you could buy my book on ASP.NET Core 2 :).
We're sharing more and more code with .NET Core now so there's convergence happening but there are still pieces that are unique to us.
Disclaimer: I'm working on Mono for Xamarin/Microsoft.
Mono used to have it's own C# compiler in addition to the runtime, but since the official C# compiler is open source, well-engineered and cross-platform compatible, it now uses the same compiler as other runtimes.
Xamarin is based on mono, and Unity ships Mono as their .NET runtime. Mono supports the most platforms out of all .NET implementations, including all current and previous generation gaming consoles.
I imagine that WCF was one of the first parts to be converted. How mature is the Core .NET WCF now?
However, the ASP.NET Core MVC framework supports Web API and this was originally part of the WCF REST services. Of course, you can still interact with SOAP endpoints (served by various frameworks) as a client, as pointed out elsewhere here.
It's sad that it won't be available. Honestly, it puts a bit of damper on my development plans.
.NET Core has a pretty good MVC framework you can build REST services on, GraphQL, or gRPC etc.
Most of the framework baggage was left behind.
For the server side of WCF you're right those are only available on .NET Framework right now.
Once you get the hang of it, WCF is one of the best frameworks EVER written.
There's a radical change in public behavior of Microsoft since Satya Nadella became CEO. While at first I was skeptical, it's now been three years we have had to observe whether Microsoft's actions match their promises.
So far, I'm impressed. I think their new vision and approach to doing business is much improved from that of their previous two CEOs - it's better for consumers and developers, and frankly it was necessary for the long term survival of MS.
I don't expect to see nasty behavior from them like we have seen in the past.
They're still a little confused about Windows (why do I need to spend $50 on Pro to encrypt my drive?), but you can get Office on anything now. Even Edge has an Android port (beta).
They lost control of the client (it's web + Android/iOS now), steering away from the current course and back to the old one is a sure way to irrelevance.
The TLDR is the dotnet install script works great. Use Jetbrains Rider if you want the best experience (though not free). VSCode is just ok.
Overall I've really enjoyed my dive into this world I never thought I'd be a part of (let alone exist).
Regarding the ecosystem, even Java has proprietary libs on top. For dotnet, Windows stuff is still proprietary, but even that is changing. You won't care about it anyway.
Just make sure you stay within dotnet standard (i.e. cross platform API standard for dotnet) and either use Open Source Microsoft extras or just use community-developed stuff.
For Linux C# dev, Jetbrains Rider or Visual Studio Code + C# plugin.
Regarding extensions, the battle has shifted. Microsoft is fighting Azure and GCE these days. The proprietary bits are in the services. The clients are Open Source to get mindshare, so no worries there.
Just one thing: MS is fighting AWS and GCE :) not Azure :). Well on the other hand, who does not remember the old org chart. Who knows.
On Linux you'll be a second-class target for libraries. The language itself is well supported, but only it.
About future Microsoft behavior, your guess is as good as mine.
The second class target is also not accurate. Azure (the future of MS) runs 60% Linux (afair) which makes .NET Core on Linux their primary target.
Give Microsoft and the .NET community a break. They achieved a lot in three years. The vendors other than the .NET team (including the rest of MS) just need some time to adopt their libraries (I am looking at you Amazon).
I don't have much experience with C# development and basically none with .NET, but so far my experience has been a clear No.
The elephant in the room is the IDE. Visual Studio is the C# IDE and doesn't exist on Linux. There's MonoDevelop, which is now also owned by Microsoft and seems to share some components with Visual Studio, but it's still not nearly as powerful of an IDE. It feels more like a clunky text editor with a button that will make your program run.
Next thing is that I don't think, you can really develop GUIs on Linux. There seems to be some integration with GTK in MonoDevelop, but I sort of doubt that this works well, and my experience in Visual Studio has been that you practically cannot develop GUIs in C# without using Visual Studio, as so much of the design process is directly integrated into that. Also, developing a GUI application on Linux that will run on Windows, I don't think is possible at all, though I haven't spent much time researching that.
Last point that I have is sort of just a dumb bug, but it felt the most like I'm a second-class citizen. MonoDevelop does not currently support executing console applications on an external console on Linux when you install it via Flatpak (which is their primary distribution method).
But that by itself is not even the problem, it works fine with the internal console and I can live with that. The problem is that there's a checkbox to enable running on an external console and that checkbox is enabled by default. You cannot run console applications on MonoDevelop out of the box, solely because of this.
And console applications seem to be the main-thing that MonoDevelop is good for, so you'd think they would test that and ensure that it works, but apparently not. And really, just disabling this checkbox by default would fix the issue.
What makes this issue worse:
1. The error message is entirely cryptic, it says "Debugger operation failed - Cannot start process because a file name has not been provided.". Thankfully, the internet coughs something up quickly when you copy-paste that into a search engine, but at least I personally first thought I had forgot to give it a file name somewhere and tried to find that.
2. This isn't just one flag in the global settings that you have to flip once and you're done. Instead it's a per project setting, so you have to flip it every time that you start a new project and it's not particularly easy to find either.
3. This has been a known issue for a while (or at least, I hope that they know about it).
> I don't think, you can really develop GUIs on Linux.
I can. E.g. recently I’ve picked GLES + NanoVG for the lower level of the stack, and implemented the upper levels (controls, touch input, transitions, etc.) in C#.
There’re higher-level approaches, including a couple of cross-platform ones (Gtk#, Avalonia, electron-based), I’ve picked lower-level stack because I needed to replace the whole Debian desktop including its desktop manager.
I’ve created a C++ *.so library that uses DRM/KMS to initialize GLES on top of hardware GPU, and exposes NanoVG’s C API. Then in C# [DllImport], and actual GUI implementation. For touch input I just read /dev/input/event0 using FileStream API.
I’ve spent about a week implementing that thing, so it’s not that hard to do.
The main downside is the lack of ClearType. On the lower level FreeType library supports that, but NanoVG doesn’t.
Basically open-source, but with the strong philosophical difference that the goal is for the users to have their freedom, not for a company to apply the same software development strategies that made Linux and Firefox so successful. (Also, someone will now murder me in my sleep, because I've said that it's basically open-source.)
To add some additional information, whilst there has been a redesign, work has been carried out to allow a certain level of backward compatibility. This work is referred to by the name .NET Standard. Can think of this as re-implementing a selection of commonly used libraries from older .NET versions on the new .NET platform to make porting easier. The most up to date .NET Standard version is version 2.0.
> can I develop and use C# applications on Linux
> I definitely won't switch to a language that doesn't support Linux properly.
I find this comment really strange. What makes C# top contender for you ? You seem to be asking really basic questions about it.
My main reason for using Java is for the easy cross-platform development. Most of what I code are basic GUI apps that do conversions between spreadsheets and various file formats. Java's "compile once, run everywhere", with its GUI support and many libraries, is exactly what I'm looking for.
When I heard that .NET was open-sourced and getting support for all platforms, I thought that meant it could be an actual competitor to Java for my use-case. As I've learned from the responses here, it's actually not, and my fears of running into major parts of the ecosystem that are still proprietary were well-founded. I don't need to worry about "future" proprietary extensions: they're already here!
Nowadays it's my favourite language I write in - it has _excellent_ tooling, especially JetBrains Rider IDE. The open-source library ecosystem might not be as broad as NodeJS or Ruby, but it's high quality and growing all the time.
For most the late 80s-early 2000s, I was not a huge fan of Microsoft mostly because of their predatory practices and the shoddy quality of their software. But they had a few products that I thought were legitimately good, and Visual Studio (and the C# language) was one of them. Part of my admiration of it was partly because of Anders Heijlsberg, its architect.
I started my programming life with Borland tools (Turbo Pascal), and then later Delphi. Anders architected all of these tools. They are long in the tooth now but at the time, these tools were fairly well regarded because they reflected flair and good taste. When Anders created C#, I managed to look at it without being clouded by my Microsoft prejudice, because I knew who was behind it.
I started writing C# code a couple of years ago when I started working for a large enterprise. Even as a Linux/UNIX guy, I am able to say that C# is a truly elegant language that is fun to work with, and I would pick it over Java or Scala any day. I don't like its Windows centricity (Windows is still not my favorite platform), but outside of that, it is truly a well-architected language.
Silicon Valley types would do well to put aside their prejudices of the C# language and evaluate it based on its own merits.
But good java IDEs aren’t free either.
Delphi was way ahead of it's time.
PS: Commodore 64 was my first love.
To be fair, you should also mention Anders involvement in the thing that J++ was, and the Sun vs MS settlement.
The people of Dot Net Special Interest Group at Fedora are too nice to say this but I am not. Microsoft is dragging its feet and it is ridiculous.
There were issues with Fedora 25 which is what I was previously running, but that resolved itself after I dnf upgraded to 27.
Or am I missing something here?
This indicates the project isn't free enough.
I also can't imagine why Microsoft wouldn't want higher adoption levels...
I thought that after open sourcing .Net the C# adoption outside the MS ecosystem would be wider by now, but I feel it's not the case. Or am I missing a trend I'm not aware of? (which is very likely too)
Plus dotnet core wasn't API stable until recently. I think we're still 1-2 years from mass adoption.
Also check @librexpr's comment above, there's a lot of confusion around.
I think they finally managed to get image manipulation in to replace the missing System.Drawing, but EF Core is still woefully half-finished.
The literally seem to have no clue about how people actually use their system and keep focusing on all the wrong things. Actually, it's more like some idealist programmers have become the core team instead of getting-it-done programmers, so it's all the latest fads instead of getting finished. The obsession with async isn't helping either, it makes the code so bad for no real-world performance gains.
My impression is they are moving super slowly and from the POV of an existing customer, the whole process has been a complete disaster. It might end up ok, but at the moment it's just a bad version of existing .Net.
You have no cross-platform build and dependency management tool that runs on .NET Core (Using MSBuild and NuGet together requires Mono or the full .NET Framework), and there's only an early version of JetBrains' Rider IDE for non-Windows platforms, there's basically no working integration with any CI or CD system, and the library ecosystem is basically not existing, compared to the open source Java world.
What library support is missing on .Net vs the JVM? In my experience everything that's really useful has .Net ports.
Then please help me — I'm trying to use C# more again — what I should use for dependency management, builds, and artifacts deployment (basically, an equivalent to gradle) on .NET Core. I'm seeing Cake, aka C# Make, but the C# subreddit told me that's useless and I should just use MSBuild. But that doesn't get me my dependencies at all, and doesn't run on .NET Core. I could write a bash script to invoke nuget and the C# compiler but that would be ridiculous.
For libraries, from http2 to time + date libraries, C# is lacking, in tmy last project I ended up straight up translating the parts of JSR-310 I needed.
I'm looking for a 1:1 replacement for JVM languages here, especially regarding tooling. Rider has proven much less mature than IDEA for now.
The build-time code is handled with gradle’s buildSrc folder.
I also obviously use Annotation Preprocessors to pre-generate code for my Java projects, and additional build tools to further minify and optimize the output (e.g., for Android, I also run redex over it).
Basically, gradle for me handles the entire build – fetching dependencies, building native libraries, running code generators, building Java code, binding them together, processing assets, compressing the result, and optimizing it all – and deploying the results.
In nice, and modular steps.
Noda Time might have what you need in a datetime library.
Thanks a lot – this is the first time someone actually provided a useful solution, this might actually work well enough for simple projects.
> Noda Time
Also thank you a lot, that actually is significantly better than Joda Time in the Java world, and as result, actually useful (in fact, it feels like a 1:1 clone of JSR-310, at least from what I've seen in their API docs)
This is actually very helpful, thank you :)
However, the development of c# did follow the development of Java. C# is not really related to Delphi or Pascal other than they have the same author.
Maybe that is funny, but it's not even a little bit true. Delphi and Java were released roughly contemporaneously. One was mostly an IDE/RAD tool for Windows, the other a cross-platform VM + language. Unlike .NET/Java, Delphi/Java were not even the same kind of system.
What exactly is .Net's niche, given front-end wars are over?
They played many years catch up and I think at the point when they realise they cannot do everything themselves and started to embrace the open source world they quickly moved from catching up to being the innovator who pushes new limits again (Azure, Surface devices, Window 10, .NET Core, etc.)
It's already a bit old, but I wrote a blog post not too long ago where I tried to sum up some of the amazing things that happened at Microsoft over the course of the last few years:
But, you know, hail corporate!