All that said, .NET Core is a huge win on the operational side of things, so it's definitely moving in the right direction.
Websphere is such a pain to use, yet it still is everywhere on enterprise projects.
It is the typical enterprise software suitable to sell consulting experience in what concerns configuration and management.
Endless list of configuration options, some of them only available via scripting and best of all IBM J9 specific features.
One of the issues we once had around 2006 was that our entity beans stubs would only work properly if compiled via J9.
Anyway, I agree that operationally .NET has struggled, and of course the community was much different than other open source solutions, but it both have gotten much, much better in just the last few years.
At my last job we had two teams, one had a .NET stack, and the other had a Java EE stack, it was almost like someone had set up a lab to test which one was better (both were required to deliver very similar style LOB applications, one for one department and the other for another).
The .NET team consistently delivered a lot more value faster, and the Java deliverables always had reliability problems which they attributed to the JBoss setup. To be fair, the Java side was hampered by an "old-school" architect who refused to use the right tools for the job (even on the Java side, there are pretty decent frameworks and IDEs).
* ASP.NET
* .NET MVC
* .NET 4.5
* .NET WCF
* WPF
It's a nebula of names, but I've been ridiculously productive while trying to grasp .NET core. I'm currently trying to make a job to take DB data and dump it on Elasticsearch. It honestly feels like PHP7 with async, it's great
* ASP.NET = Web subsystem of the .NET framework.
* ASP.NET MVC = MVC framework that is part of ASP.NET (not ".NET MVC")
* WCF = Communications subsystem of the .NET framework (not ".NET WCF")
* WPF = Presentation layer subsystem of the .NET framework
Even now when I tell some people that .NET is very simple, fast and runs on osx/linux they are like "Really!? No way bla bla."
1. The compiler checks for exceptions being thrown and and makes you write a catch.
2. Anonymous inner classes.I prefer even handlers, but would still like this feature.
I think c# does a good job of always adding features that make it easier to write code.
[0] http://www.mindview.net/Etc/Discussions/CheckedExceptions/