C# is a better language, but the JVM is a significantly better ecosystem. Java will always be behind (and type erasure for generics is annoying enough as someone who started in C# that I don't think it will ever catch up) but between hotspot and being the preferred language of 2/3rds of the clouds I think it clearly wins.
I too have spent significant time programming in both C# and Java. This complaint about type erasure in Java: When does it affect your daily life? There are so many craft workarounds available now that it hardly comes up anymore.
Also, would your opinion of Java significantly change if type erasure was removed or never existed?
I have much more experience in C# then Java FWIW, so you're welcome to take my opinions with a grain of salt.
I've had a couple of really annoying errors with Beam serializers that took me way longer to debug then I thought was worthwhile.
I think it is a worse choice, it's too ingrained in the language and ecosystem to change. That and a couple of other nits would likely make me pick Java over C# or Go if I was starting a new project going forward.
Sorry you’re down voted. Closure might not be what the author is looking for.
There are a lot of languages you can use with the JVM, Closure is one of them, Groovy, Scala and Kotlin are some more. Kotlin is gaining a lot of traction, especially since it’s backed by JetBrains.
"Sweating Bullets", "Almost Perfect" (http://www.wordplace.com/ap/), "The Autodesk File" (https://www.fourmilab.ch/autofile/e5/) and "Show Stopper!" were a few books that I think pair very well, and as a developer who wasn't around in the time really gave interesting and comparable insights into the development of a few really important companies and pieces of software.