I program mainly in C++ but recently took up Java for its advantages. I heard about the mono project and that C# is now cross platform but that the GUI of C# is not. I like Java but I also like C#, Java has some anoying restrictions sometimes (like no operator overloading and it's templates is just weird), though it is corss platform like almoust no other language I know. I maily develop for windows systems but I do from time to time work with Linux, Unix and Apple.

Java runs on all these systems without rewrite or recompile. But now with C# (that is a much more modern language and has a lot more fetures) also runs on these systems.

So is it worth it to learn C# and leave Java? or should I continue with Java?

Once i too was in a same confusion about the java and C#. Because I am specialized in Java whereas I got the Job in c# platform. I planned to stay there at the company till training period. But now over a month is passed and I am loving it. You know, to write a keylogger application ,in java it takes nearly and minimum 500 lines of code and debugging is also little bit fuzzy. But the whole keylogger application in c# took only 50 lines and the prolem of debugging is also reduced nwhen compared to java.

So dont hesitate, If you wish to be in java, you can. If you need an easy change switch to c#.

FYI, c# also has an advancement called F#...

Try googling it...

Hope this helps you...

Have a happie Coding...:D

Comments
keyloggers? Work for the NSA or some other criminal organization?

C# is NOT cross platform! Yes there is Mono for Linux, but it is not really ready for prime time... Consider it a Windows-only tool. If working in the Windows environment is what you want, then fine, but realize that even on Windows phone systems, Java is still the language of choice.

So, ss125 writes keyloggers? Is he a blackhat hacker, works for the NSA, or just someone who likes to see what others are doing, behind their back? :-(

Comments
Any rules stating that only NSA can code for keyloggers? Because I am programmer with interest in learning of all sort of things.

There is also Mono for Mac, but I like to see a VS and .NET for Mac, before we can speek a bit more about cross platform.

My comments about ss125 being a blackhat or working for the NSA was tongue-in-cheek. No disrespect was meant. I have written stuff like keyloggers in order to implement remote control apps like VNC long before such tools were available.

This thread is a bit old , but i'm having the same questions (under different circumstances) as the OP. Googling for "CLR versions for Mac and Linux" led me to mono and wine ( can i say respectively here ? ). Now in one stackoverflow thread , i read that the MSIL is only a part of an EXE for a windows program , and the other parts include native windows stuff , and MONO will just take the MSIL and do that part. So it doesn't work the other native stuff inside the EXE ? What does it all mean ?

apologies for being vague , but i really do not know enough to be more specific.

If you read the comments on the accepted answer, you get the whole story: The only native code in .net .exe is a single jump instruction. This native code is ignored on both modern Windows systems and on Mono. It's only relevant for Windows systems that predate .net.

None of this affects the compability between .net and mono. As far as that is concerned, all of this is irrelevant information.

This question has already been answered. Start a new discussion instead.