At least Java is open, alternative implementations are present, and can be run on anywhere and everywhere.
The Microsoft ecosystem can become more confining if you continue to operate as if its 2008 and follow all their old patterns (e.g. IIS, Azure, et. al.)
For the more clever developer in 2023, you take .NET 7 and skip over all of the Azure-integrated bullshit. You can throw away 100% of their complex AspNetCore libraries in favor of minimal API integrations. You can do everything your way and run it wherever you want.
The entrapment in the Microsoft ecosystem is of a substantially different nature than entrapment in the Java ecosystem. Becoming mired in Microsoft licensing concerns is a matter of technical competence. Becoming mired in Oracle licensing concerns is a matter of business competence.
The other thing I do is being able to use multiple languages and using the right one for the job, and ensure that all are supported by GCC suite.
Well, I'm on a very different niche than many software developers here, but at least it gives me more freedom to do what I want to do, and how I accomplish these.
Miguel was conned into believing that it'll be completely independent like OpenJDK, but it didn't turn out like that.
IOW, C# is as open as VSCode.
Whether you like Java (the language) or not, Java (the ecosystem) will not go away. In fact, it is alive and well, and I would guess it is at least an order of magnitude bigger and more mature than the .net ecosystem.
If you don't like Java (the language), you can choose Kotlin (Java++), Scala (Haskell--), or other languages (eg. Groovy?)...
A lot of this is the inertia I alluded to. There's no reason this couldn't all be written in C#. Kind of like the C++/Rust debate.
There's no reason it couldn't be written Brainfuck.
doesn't mean it's a good idea
I really wouldn't say so. All the new features are convenient and easy to understand, especially if you have Visual Studio to teach them to you (type if (x == null) x = new .. and you get a popup to transform it into the new operator). It's not a zoo like C++.