For mobile applications, Java is more commonly used.
For cross-platform development of Windows / Linux is also java. Although this is likely to change over time. The compiler code is open, the .net code itself is also.
For desktop applications java questionable. There are frames, the same Open Office proves that you can do something on it well. But still there are very few such examples.
Both are quite popular for web development. Sobsvenno, it is now very popular.
If you choose java, you will rake up a bunch of xml - I’m there almost in all the frames ponapihan. Plus, no syntactic sugar, no operator overloading, no properties, everything is terribly cumbersome and with long names.
If C #, then everything is done for the convenience of the programmer. Operator overloading has properties, there are delegates (in fact, function pointers). New features are constantly being considered, the language is actively developing, although very few changes occur in the .net platform itself.
And also, my personal opinion: it’s almost impossible to run something written in Java just the first time. It is necessary to climb on the variable environment, make sure the version number of the installed java, and so on ... A kind of linux-way. And on Sharpe everything somehow works right away. The frameworker is usually already installed, but even if not, then you just need to install it and it will work. No extra fuss.