Java vs. C#, help!
Hi, I am a newbie to programming and thus am uncertain which language to learn ... java has been a hot thing for a while but C# seems to be the 'in' thing with all its usability in the .Net framework and so on ... so can you please help me choose between Java and C#...i would also like to request you to write the positive and negative sides of both while giving suggestions...
C# and Java are just languages, anyways. I don't know if such projects are in the works, but Java running on the CLR and C# running on the JRE are far from unlikely future developments. The more interesting question is the Java versus .NET tool kits, the CLR versus the JRE virtual machines, and the amount of code and libraries you can get to ease your work. Java has a greater set of libraries, which isn't especially strange, considering the age difference between the two.
Both are managed and run in a stack based virtual machine, but that virtual machine is different between them. The JRE is more introverted. It's hard and expensive to go outside the Java environment. Java provide a rather good platform independence, except for the obvious problems of OS integration. The CLR is extrovert - it's easier and less expensive to go outside the CLR, but at the cost of a less robust sandboxing. CLR has larger problems than Java in platform independence, and is well integrated to one OS but not to any others.
There's of course the issue of locking yourself in. Sun has the Java development in their hand, Microsoft have the .NET and CLR developments in their hands. But Microsoft owns and primarily develops one of the platforms. They don't have to, like Sun, try to play good in all environments. Neither do they rely heavily on another company (read IBM) for the primary IDE.
Personally, I consider the C# language to be a retry at the process that created Java without the kludges and mistakes. It's a better designed language. The CLR is somewhat superior to the JRE as well, though that only on one platform. All over, Microsoft has designed a better architecture and a better language. Usage and libraries will come. If these two were my only choices, I'd go with C#, using .NET on top of CLR.