|
The problems with C# are many. It's tied to .NET at the hip - there are no 3rd party implementations (Mono is effectively dead, correct me if I'm wrong), it's development is effectively solely driven by Microsoft, and every few years you have to rewrite all your things or get stuck on EOL versions of frameworks or abandoned tooling. The community is also vastly different in that it does not (yet) value open source and many different implementations of ideas (ie. there's an official Microsoft way to do X and that's what everyone does). C# might be a fine language, but it's coupling to .NET and Microsoft are kind of a liability. Java has a ton of warts, and it's not the language I'd choose today. However, it's ecosystem is FOSS-first and is immense in size and scope, has numerous options for any type of library/framework (take a loot at HTTP clients, or logging frameworks, or web frameworks, etc), and while Oracle primarily drives development they don't get the de facto final say anymore. There's also many JVM implementations and many class library implementations - all with different pro's and cons. Perhaps .NET will get there one day. It is, after all, relatively new at FOSS/XPlat. |
Surely you're not gonna say that OpenJDK and GraalVM (both owned by Oracle) is somehow an issue, would you? And Mono lives well in dotnet/runtime, serving targets like Browser WASM and iOS (until NativeAOT replaces it in full at that target, at some point).
But you're not using .NET, so no need to worry. No one is gonna pry Java from your hands, but we'll get to laugh at the choice - it is both slower in performance-oriented code and more verbose in LOB one. Pretty much the only driving reason behind choosing it is if the company is an Apache/Java shop or when a vendor offers an SDK in Java/Python/JS only due to their popularity which is a common issue in the industry.