On the flip side there's a lot of people who over-represent C# especially in comparison with Java. I mean the language is very nice, better than Java no doubt - but the platform and ecosystem is much less mature than JVM. Where is the .NET equivalent of ZooKeeper, Hadoop etc. .NET can use those like any other language but the fact of the matter is that Java was and is still the choice on those kinds of projects and the ecosystem is much bigger. Even when .NET gets something from those like Akka.NET, JGit it's usually a worse copy. And JVM ecosystem is much more distributed, there's plenty of stuff going around all over - Scala feels a lot more popular in the real world than F#, Clojure feels like a similarly niche thing but is entirely community driven, and the early results from Graal/Truffle were quite impressive, much better than Microsoft did with the DLR before they left it off to community.
We also needed to use Redis in C# and the client is unstable. Nothing we can do about it besides catch the exceptions and randomly reconnect when it happens. Are we losing some data? Probably.
Even if the open source community embraces C# it will take 10 years before the offerings are comparable to Java. And for what? C# is nearly identical to Java in design and performance, it just has slightly prettier syntax
One important difference that can make Java almost impossible to use in some scenarios is value types - and that's a pretty big thing when you need to control memory layouts, deal with huge arrays of small structs, etc. Other than that I agree.
I really wish MS did something to make Java/C# work together.
All the guys that live in MS world swear they're not missing out on anything. But these are the same guys that lived in the enterprise version of North Korea until a few years ago.
I like that phrase. Unfortunately it describes my life :-(
Java has a huge ecosystem for web services, big data and co. The amount of available frameworks and libraries there is partly so large that you even don't know where to start and what to use.
C# has a smaller amount of tools available for web. However in the industries where I worked (automotive, embedded, etc.) I always see C# based libraries and tools instead of Java ones. E.g. I've seen dozens of test frameworks for embedded systems written in C#, none yet in Java. Also libraries for specialized measurement equipment are often available for C#. I guess that's somehow because the EE industry is traditionally more MS focused than the pure software world, and Windows is still the default installation.
The biggest rejection comes from the strong windows orientation and the restrictive licenses. Now that the situation is improving for both, you will see the language gain traction.