I concur! Coming from Java world to .NET/C#, I was initially very sceptical of Microsoft's offering. Now, I expect to be paid a heavy premium if I ever have to go back to Java.
Also, there's a ton of world class third party tooling around .NET that really makes everything better.
Shout-out to LINQPad for saving me literally 100s of hours on testing, queries and quick POCs.
Java is very different ecosystem to the .Net world. First, the VMs have have been more performant on the Java side (this might have changed very recently, but this was definitely the case 2-3 years ago). Second, there's a big OSS world around Java, and a not as big one around .Net. Third, Java-OSX/Linux, .Net-Windows.
I think the .Net framework and language one of MS's best products in decades. Heljsberg is brilliant. :)
I was never impressed with .NET, I always considered it inferior to the JVM and its ecosystem in terms of runtime capabilities, tooling and open source available, however .NET Core moving to an open source model is super exciting, F# looks cool and I'm happy that Java finally has true competition.
I would argue that .NET is better than Java, unless Java has gotten something like Linq since last I used it (which is entirely) possible.
For those who do not know: .NET is cross platform, MS has official documentation on how to deploy it in Docker, and it is MIT licensed.
And if you want to deploy a backend for your webapp the tersenes can now rival Flask - plus the compiler can cross compile it to any supported platform, even in a form that works without .NET installed.
And of course it has Jetbrains support through Rider.
I really appreciate what I can do with .NET and I don’t do much care for the language that I need to use. Yes C# is nicer compared to Java and C++, but after many years with Haskell they all are nowhere nearly as ergonomic and expressive, which is fine. I’ve tried F# a couple of times but couldn’t get used to the OCaml like syntax.
Anyway, I favor productivity way over ergonomics. And my .NET apps are very robust and very easily deployed. Everything is perfectly well integrated. No surprises. Almost no sharp corners left. The DX is superb. The performance is great. It’s so easy to run. Time to delivery is good. And the most important bit - I don’t need to keep all the hidden Java traps in mind. JVM with its many implementations is an amazing piece of tech, but in my experience it appears as something overengineered and requires too much maintenance and fine tuning. Just like Spring, Hibernate, and many other components of a typical Java app.
As a Java and JVM focused developer the openning up of .NET really excites me. First, because .NET is a fantastic framework in and of itself, but also because this hopefully will encourage Oracle to be faster and more competitive with Java features and improvements.
- As a consultant if I am handed a .NET project, even if it's a ios, android, web app, or a wpf application, then I'm usually familiar with 100% of the ORMs/PDF libraries/GUIs/build systems/source controls/IDEs/web frameworks they use(excluding client side web). I can come up to speed and get running quickly whether it was built last year or 10 years ago. It's the exact opposite of the javascript environment where two different javascript apps have less in common than a ruby and python app. It also allows me to meet all my clients need well enough on one platform.
- Because of the previous item, it's perfect for enterprise which needs to be able to scale up and down teams internally.
- Tooling is built for ease of use and is amazing. A lot of tooling from my experience in the java world is more powerful but with much much steeper learning curves. Leading to far more specialization.
- Visual studio is a best in class IDE.
- It's not java. From a language perspective java is still playing catch-up.
Java is great, there are a lot of amazing open source projects on it, the big data story on java is far more compelling, you can write much better Android apps, and and large multi-department transactions financial/enterprise software. But it is in no way shape or form superior to .Net in all ways.
- best in class IDE
- best in class debugger
- excellent cross platform support
- very fast compilers
- a robust library ecosystem
- no arguments over how to publish or import those libraries
- a build system that just works
- and all without having to install tons of third-party, fly-by-night projects.
I've worked in lots of different environments. .NET is the only one I've been able to leave, come back to after some time, and get back running in minutes. JavaScript, Python, and Ruby were all rickety houses of cards in comparison. C++ is just inscrutable. And Java might get the closest, but it still feels like being perpetually 5 years behind .NET.
Cross-platform .Net is not as good as cross-platform Java/JVM. It's getting better, but it's not there yet, and it's currently a very confusing mishmash of concepts and implementations. I suspect it is also difficult to find people who are deeply familiar with it, due to its recency.
reply