I started learning Java a couple of months ago. I also wanted to become more exposed to linux so I installed ubuntu and started working with Java since then. In the meanwhile however I became more interested in C# and in learning the Windows platform. At this point I'm asking myself if I should stop learning Java and move to the .NET world. I don't hate or dislike Java by the way, I am just more curious about windows/.NET at this point in time.

My question is, should I remain with Java or go with C#/.NET? What is your advice?

closed as off topic by World Engineer May 30 '13 at 18:18

Questions on Software Engineering Stack Exchange are expected to relate to software engineering within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here. If this question can be reworded to fit the rules in the help center, please edit the question.


If it will help your decision, Java is a relatively stable language; it's speed of evolution is much slower than that of C#. Consequently, C# is getting all of the cool new features more rapidly than Java. Whether this is a good thing or not depends on your own point of view.


You can use Java or C# on either Windows or Linux. Look into Mono, for example, to use C# on other platforms.


Study both while you can along with good programming practices in general. You're in an enviable position that may not last long due to a new project/job requirement. Hopefully, you'll learn enough about both of them to be able to compare and contrast the two and make objective decisions on when one is more appropriate than the other. I hope you can remain in control of this choice as long as possible.


At any point in my career I am learning two or three languages at the same time. It's fine to have a couple pots on the stove because you'll get bored or run into a problem that blocks you for a while with one so you temporarily switch to another.

Think of it this way: corporations/potential employers don't care as much about whether you are a total expert in a particular language as they do whether you are flexible and can turn out good code in any language they throw you at.

Having a good understanding of constructs and being able to apply them in multiple languages beats knowing esoterica about one language.