Hacker News new | ask | show | jobs
by 5e92cb50239222b 1831 days ago
Java is miles ahead in terms of cross-platform support. .NET applications may be running fine on other operating systems (I write them at $DAYJOB and they mostly do), but the development tooling is absolutely incomparable across OSes. As long as .NET is being developed and pushed by Microsoft, the situation won't change, because it doesn't align with their incentives.

Some people/companies also care about more than the big three operating systems that MS cares to acknowledge. .NET has no official FreeBSD port, for example.

6 comments

I use jetbrains rider. Tooling on linux is just as good as Windows. Developing .net is far more enjoyable than Java.
Yea Jetbrains Rider is fantastic. I'm assuming the parent never tried it. Seeing as it is essentially IntelliJ the comparison to Java tooling seems ironic.
I second this. .NET core works flawlessly on Linux and JetBrains Rider (and on Mac, which is what I develop on). The standard libraries and ASP.Net core are really well designed and a joy to work with.
Seconding Rider. I use Windows and still prefer it to VS.
On an IDE written in Java....
Rider is a solid mix of C#, F#, Kotlin, and Java (and likely more). The R# engine is a very large .NET codebase, and the F# plugin to that is written largely in F#. So it's a little more complicated than whatever the shell is written in.
.net is catching up very quickly in cross-platform support.

Tooling for. Net is miles ahead of anything else I've witnessed.

As for FreeBSD there's a huge nuance:

> FreeBSD support still requires additional work to implement features that are missing in the runtime to reach parity with the other operating systems. The community will most likely need to do that work in .Net 3.0/3.1 but I would like to see official automated daily builds for FreeBSD restarted with the master (.Net 5) branches of the necessary repos.

As for your statement on Microsoft. I'd trust Microsoft with. Net more than Oracle with Java.

Where is this FreeBSD quote coming from? Link please, I tried to google it without success.
VS Code is available everywhere and can even connect to remote environments. Visual Studio is on Windows, and there's a Mac version that's slowly getting better.

What other languages stacks provide a much better tooling experience? If you use IntelliJ then you get the same thing with Rider (which is just IntelliJ + Resharper), and the rest are all basically VSCode at this point.

It's been a while since I looked at .Net, but last time I checked it was inferior in terms of multi-platform tooling to many languages.

So take VS Code for example, last I looked you could not build Xamarin apps in it, where as with Go, JS, Dart, etc you can use VS Code to create anything in those languages.

Take a look at Rider, it’s relatively recent, it’s possible you missed it. Basically, it’s Resharper embedded in an IntelliJ IDE, and it’s superb.
Well, perfview, for one. I have to keep a Windows VM nearby just for that thing. It doesn't come in handy every day, but is absolutely indispensable when it does. They have a shitty Linux port which basically doesn't work and receives almost no development.

I should also add that you /can/ dump a dotnet application running under Linux. It's just you can't do anything really useful with it, the best tooling is Windows-only. Clearly shows you their priorities.

Use perfcollect for Linux: https://github.com/dotnet/coreclr/blob/master/Documentation/...

Since that is adapted to use Linux specifics :)

If you're writing Java, you're going to use IntelliJ (unless you're a masochist). Conversely, if you're writing C#, you'll want to use Rider.

Rider is better than Visual Studio at the moment; we'll see what happens if they actually get VS 2022 cut over to be 64-bit, maybe the performance will be back to usable for medium-large solutions.

When I write Java I actually don't ever touch InteliJ because I am not a masochistic.

No support for JNI debugging, no incremental compiler, 10 finger key chords, requires explicit menu actions to display project errors, never stops indexing the world,....

What do you use instead?
Eclipse and Netbeans.
> Conversely, if you're writing C#, you'll want to use Rider.

Sure, that's what I do, and what my friend did before he went to another company where they somehow managed to fuck up the project configuration so bad it was absolutely impossible to deploy from under anything other than Visual Studio. It's using some sort of integrated Azure wizardry, I don't work there and can't pry into their secrets. The thing is, you can't work with that project without a Windows license and a Visual Studio license. MS has zero interest in supporting this use case (can't blame them, I'm just stating the fact.)

And that is the thing right! When you stop understanding the tools, you are screwed. I (as a .NET fanboy) prefer CLI tools anytime over some VS Azure toolbox no one understands).

Azure CLI just works fine without VS.

You can't please everyone all the time.

Rider is my daily driver - no matter what OS I use (primarily Windows/Mac and occasionally Ubuntu.)

the miles you mention are one thing, but performance was always more important to me.

java pendant c# was always much more performance focused than java, having structs, unmanaged c# and c++ interoperability. it took java 16 years or so to accept that structs have their justification.

i also find the c# language much nicer than java. f# versus clojure are both excellent additions and again, f# is the more static and performant while clojure has very nice and inspiring features and aspects. it depends on what one wants here.

finally i think even if java is the larger universe, the .net universe certainly is not small either. if .net would not have taken the cross platform road i would have switched to the java runtime, but happily the opposite happened.

I wouldn’t call it performance, but control. The Java and .NET world focus on different things - the JVM has a very very advanced JIT compiler and due to the programmer not being able to specify all that much about certain aspects of code it has a better chance of optimizing it (similarly to how SQL queries can be made very fast precisely because they are at a high level of abstraction). The CLR provides more control at the expense of less optimization opportunity. This escape hatch is really useful for some programs, but not all of them would benefit from it.