Hacker News new | ask | show | jobs
by lye 721 days ago
Yes, C# is better by every measure and has had everything we can only dream of for decades. You can stop coming to every discussion of Java with the same old story.
1 comments

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.

At least the company driving .NET releases it under MIT and does not have a trap SDK that should you make a mistake of using makes your company liable to legal action by Oracle.

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.

There's dozens of JDK & Class Library implementations. If you use the Oracle one - well, that's on you.

Most people don't use the Oracle JDK anymore.

And OpenJDK is GPL licensed - and has no strings attached. What you are referencing are people using Oracle's First Party JDK (which has a base of OpenJDK + Secret Sauce). Oracle wants money for that.

> No one is gonna pry Java from your hands, but we'll get to laugh at the choice

I don't think anyone in Javaland are concerned. .NET usage is a tiny blip on the radar compared to Java/JVM ecosystem.

So you have to pay for performance features too rather than getting to contribute to them and using them in the open? Unfortunate.
You are exposing your JVM ignorance I'm afraid.

No, you don't need to pay for performance. The only people paying Oracle are those who choose to.

There are many JVM vendors - each with their own secret sauce, pros/cons and add-ons. Some charge to use, some charge for support, some just give it away. Almost all offer a for-free OpenJDK version as well.

Vendors include some of the biggest names in tech, such as Amazon and IBM, and many others you might only be aware of if you're in the ecosystem such as Eclipse Foundation, Azul Systems, Bellsoft, and more.

I would say the Oracle JDK/JVM is likely in the minority of JDK/JVM deployments today.

Oracle deliberately positioned themselves to be just another JDK/JVM vendor a few years back. All of the vendors can offer support etc. Oracle has no special control over OpenJDK these days, even if they pay the most full-time staffers to work directly on it.

> Oracle has no special control over OpenJDK these days, even if they pay the most full-time staffers to work directly on it.

The contribution graph would suggest otherwise: https://image.slidesharecdn.com/jcconf2021openjdkcontributio...

> No, you don't need to pay for performance.

Then what is the selling point of that, if you say crucial features are not closed-sourced and gated behind costly licensing?

I feel like this is among many other reasons that people get PTSD which causes them to throw the baby (C# of du jour bundled in public perception with Java) out with the bathwater (Java ecosystem) and move to, inferior in many ways, Golang.

GraalVM is released under a free license. GraalVM CE is open source.