As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
If this question can be reworded to fit the rules in the help center, please edit the question.

The number one benefit of Java over .NET is it's platform independence.You can only write .NET codes for Windows environment.

I have somewhat of limited experience in both and in my opinion, if you are only going to be developing applications for Windows, then .NET is better.

Also, those who come from C++ background, would fit into C# easily because a lot of the base structures are same. This is true of Java also, but I feel C++ is closer to C# than Java. After all, C# actually means, c++++.

Someone more adept in both technologies can given better and diverse range of suggestions.

Choose programming, not a language. If I were still in school, java and C# would be the last things on my list. Look at the crazy academic stuff while you can, like Haskell and Lisp. Then come back to the mundane code you will spend 95% of your professional career slinging.

Learn whatever's in demand in the area where you want to live. The languages are very similar, so it doesn't take a whole lot of time to learn one once you know the other. Check out job listings for the area and see what's in demand. Part of making yourself marketable is knowing the market.

C# and Java are similar enough that if you know one, you'll be able to pick up the other easily. Contrary to popular belief, you can develop C# on non-Windows platforms, although the level of support may not be as great.

As for the long term, that's up in the air; it depends on how much Oracle continues to act like Oracle and the effect that will have on the Java ecosystem. I'm not optimistic, myself.