I kind of see it the same way. I was well familiar with C and C++ but I never felt particularly married to them. (I have no real issues with them either, as opposed to something awful like PHP.) So when it came time to learn Java I just thought it was extraordinarily easy and simplistic (or maybe intuitive is the word I want here?). It came off as a "clean-room implementation" of OOP whereas C++ was kind of a hack-it-into-C approach. I see C# more as a continuation of C++ rather than something new and clean.
Other than Android I suspect my Java days are over. I'll probably never pick up C#.
C# might have a lot more options, but you can write essentially exactly the same way you do in Java if that's your cup of tea. There's no reason it has to be any uglier, and if you've seen how it handles exceptions and event handling you'd think the opposite was true.
That said, I agree Java seems more "pure". It's always seemed to me more like something a professor would have designed to show off OOP, while C# was more a marriage of that idea with all the convenient things programmers wanted but weren't quite as "pure". A more practical language.
The real downside of .net was always the way it was linked to the MS ecosystem. I don't think i'd trust Mono with anything mission critical to this day, so if you weren't in a MS shop that would be a strong disincentive to even consider it.
I would have liked to use Mono for some ASP.NET MVC projects. The trouble is that there's zero documentation on how to actually go about configuring the server for this. Stackoverflow was my saving grace, but only after several hours. Not a pleasant experience.
I do develop on C# and Java for both professional and leisure. Since 2006, I'm following this project and always got excited with what they bring from M$ .NET. Never used it in any actual project until 2008 where I tried to prove that Mono Framework can become better than Java in terms of performance(there is no flaming here, just sharing my personal experience) and it did not fail me, even though it was deployed on Mono Framework(on a Debian server) with the old garbage collector(before sgen was introduced). We were able to achieve an average of 10,000 transactions per second, memory never been an issue because the machine have 4GB RAM and never reached 50%. Most of the application I developed using Mono Framework are background services, and developed a cross-platform window application which is really a small one, I used GTK# and the users have no issue with it.
It is really easy to make cross-platform applications on Mono, same with Java(though a little bit easier).
Being a web developer that loves PHP, Razor is really a great application stack, for .NET and Mono Frameworks, it made me swear that I won't go back to the hellish WebForms. I tried to develop a simple web application using Razor + Mono + PostgreSQL(with ported Northwind sample database) running under Apache on a Debian server on my Amazon AWS(with less than 500MB RAM). It runs very smooth and a little bit stress testing of 10 people simultaneously accessing it.
Wish Java would be able to eliminate large overhead and integrate LInQ. It has lots of great tools, coming from the community.
I'm not sure if it is still considered as a template engine being independent from ASP.NET MVC. If this is still true, then thanks for the correction.
For sure Razor is not an application stack.
Maybe I was a little wrong when saying it was a template engine for ASP.NET MVC, maybe it would be more correct to say that it is a template engine for ASP.NET?
I guess the template engine could be ported to other languages such as Python, Ruby, etc.
Either way, it definitely is a template engine or view engine.